背包密码

Time Limit: 1000ms
Memory Limit: 65536KB

64-bit integer IO format: %lld      Java class name: Main

Submit Status PID: 29141

背包密码系统是一种非常经典的公钥密码系统,这种密码系统加密过程如下:

  1. 选取一个长度为n的正整数超递增序列a[i],满足a[1]<a[2],a[1]+a[2]<a[3],……,a[1]+a[2]+…+a[n-1]<a[n]。
  2. 选取正整数m>2*a[n],w和m互质,v是w模m的逆,即(v*w)%m=1。b[i]=(w*a[i])%m。
  3. 加密时,对一段长为n的二进制串x[i]。有S= (b[1]*x[1]+b[2]*x[2]+…+b[n]*x[n]%m。

这种密码,告诉你b[i]就可以进行加密。但是仅有b[i]很难进行解密,因为需要求解一个普通的01背包问题 。只有再告诉你v和m,解密就会变得很简单,现在告诉你b[i]、v和m以及S,请你帮忙进行解密。

Input

正整数T(T<100),代表数据组数。每组数据格式如下:

第一行正整数n(1<=n<=32)代表二进制串的长度

第二行n个正整数b[1]到b[n]

第三行三个整数,v和m以及S。

(保证所有输入都在10^9以内,提示:中间过程可能会用到long long)

Output

对每组数据输出一行,解密得到的二进制串x[i]

Sample Input

2
3
3 6 1
4 11 4
4
1 18 20 24
2 33 5

Sample Output

101
0110思路:好题。已知:1.v*w%m=12.b[i]=(w*a[i])%m a[i]为递增数列3.S= (b[1]*x[1]+b[2]*x[2]+…+b[n]*x[n]%m 求x[i]解:由2、3得:4.S= ((w*a[1])%m*x[1]+(w*a[2])%m*x[2]+…+(w*a[n])%m*x[n])%m4左右同乘以 v%m  S*v%m = v%m*((w*a[1])%m*x[1]+(w*a[2])%m*x[2]+…+(w*a[n])%m*x[n])%m5.S*v%m =a[1]%m*x[1]+...+a[n]%m*x[n]由1、2得:b[i]*v%m=(w*a[i])%m*v%m6.a[i]%m=b[i]*v%m由5、6得:S*v%m =b[1]*v%m*x[1]+...+b[i]*v%m*x[n]
x[i]为01所组成的编码即时如 5=1*x[1]+2*x[2]+4*x[3](第一组样例推到来的) a[i]为递增数列 所以得优先从后往前考虑如果s》=b[i]*v%m x[i]=1 s-=b[i]*v%m;
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long
int main()
{int t;scanf("%d",&t);while(t--){LL n;scanf("%lld",&n);LL b[1005];for(int i=0;i<n;i++)scanf("%lld",&b[i]);LL v,m,s;scanf("%lld%lld%lld",&v,&m,&s);for(int i=0;i<n;i++){b[i]=b[i]*v%m;}s=s*v%m;
//        printf("s:%lld\n",s);
//        for(int i=0;i<n;i++)
//            printf("%lld ",b[i]);for(int i=0;i<n;i++){if(s>=b[n-i-1]){s-=b[n-i-1];b[n-i-1]=1;}elseb[n-i-1]=0;}for(int i=0;i<n;i++)printf("%lld",b[i]);printf("\n");}
}
												

BNU 背包密码(编码与解密)相关推荐

  1. CTF-Crypto 密码原理及解密方法

    CTF-Crypto 密码原理及解密方法 文章目录 CTF-Crypto 密码原理及解密方法 推荐综合加解密网址 一.常见密码格式 二.古典密码 凯撒密码 仿射密码 埃特巴什码 培根密码 棋盘密码 希 ...

  2. Backpack Cryptography【背包密码】

    背包问题 在介绍背包密码体系之前,先来引入一下背包问题. 现在我们有n个物品,每个物品都有一定的质量,背包承重是W,问哪些物品放到书包里恰好可以把这个书包装满. 好了这就是著名的背包问题,我们用一个式 ...

  3. MySQL连接配置文件密码加密以及解密

    老生常谈的加密问题 这次是对数据库连接属性的加密 一开始接到这个任务感觉很迷茫,刚开始bing了如何登录加密,但是结果不对 后来发现是关键字没搜索对,改成了"数据库连接加密",了解 ...

  4. CTF常见密码编码合集

    ASCII编码 简述:使用制定的7位或8位二进制数组合来表示128或256种可能的字符.使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9.标点符号,以及在美式英语中使用的 ...

  5. 04_《计算机安全原理与实践》密码编码工具(下)

    04_<计算机安全原理与实践>密码编码工具(下)含本章理论性习题解答 前言 本专栏上一篇博文介绍了消息认证的机理和非对称加密体系,从实际应用角度,二者是不可分割的.本章将在上一章的基础上进 ...

  6. 密码控件解密流程和原理

    文章目录 密码控件解密流程和原理 1.1 RSA 1.2 国密 2.1随机数生成 3引申知识hex和base64 3.1hex 3.2 base64 4.国产密码算法 参考文档 密码控件解密流程和原理 ...

  7. spring 安全编码_Spring安全性和密码编码

    spring 安全编码 在以前的文章中,我们深入探讨了Spring安全性. 我们实现了由jdbc支持的安全性,基于自定义 jdbc查询的安全性以及从nosql数据库检索安全性的信息. 通过足够小心,我 ...

  8. Spring Security和自定义密码编码

    在上一篇文章中,我们使用jdbc和md5密码编码将密码编码添加到了我们的spring安全配置中. 但是,在定制UserDetailsS​​ervices的情况下,我们需要对安全配置进行一些调整. 我们 ...

  9. Spring安全性和密码编码

    在以前的文章中,我们深入探讨了Spring安全性. 我们实现了由jdbc支持的安全性,基于自定义 jdbc查询的安全性以及从nosql数据库检索安全性的信息. 通过足够小心,我们会发现密码为纯文本格式 ...

  10. 在线Base64编码加密解密还原工具

    在线Base64编码加密解密还原工具 在线Base64编码加密解密还原工具 在线对数据进行base64编码加密和对base64数据进行解密还原 Base64编码要求把3个8位字节(38=24)转化为4 ...

最新文章

  1. 我的MYSQL学习心得(十六) 优化
  2. opencv的两个错误
  3. 数据科学 IPython 笔记本 7.5 数据索引和选择
  4. 常程加盟小米,“电磁炉”组合出道,网友喊话雷军也接收一下罗永浩!
  5. 乱谈互联网产品开发(二)
  6. 企业权限管理系统之AdminLTE的基本介绍(一)
  7. MP4BOx hint等常用命令
  8. 阿里巴巴android代码生成器,在线热点代码生成器代码生成工具-1秒钟美工助手官方网站...
  9. 【山科OJ】Problem C: Matrix Problem (III) : Array Practice
  10. ttest函数使用方法_TTEST 函数 - EXCEL 2010 中文帮助文档
  11. c语言中布尔类型字节数,【C语言】中的布尔类型
  12. ThinkPHP报错The requested URL /index/index/xxx.html was not found on this server.
  13. android老人机桌面,孝敬父母哪家强?老人桌面大横评
  14. Openlayer图层载入时进行坐标系的转换
  15. 中国足球有救了,因为这两个人已经成为中超新时代教练的一股清流
  16. 有discuz数据库,忘了管理员密码,怎样进后台
  17. 香港主机如何设置网站404页面
  18. 谷歌浏览器打印不弹出预览直接打印机打印的方法
  19. 多目标粒子群算法求解帕累托前沿Pareto,Pareto的原理,测试函数100种求解之21
  20. AS怎么找回不小心 删除的layout文件

热门文章

  1. 十五部必藏之经典日剧(给喜欢怀旧的朋友)--转贴,的确经典,还有很多没看过,不过排名前二都看了,呵呵...
  2. 拿到串口的数据如何解析_详解如何用binlog2sql解析工具来实现mysql数据表异地恢复...
  3. span 居中_H5元素的水平垂直居中布局总结
  4. JAVAFX 第三方库 布局 小工具 美化 测试 UI 框架 推荐
  5. SpringBoot学习---yaml配置
  6. android 瀑布流StaggeredGridLayoutManager重新排序后,顶部留白处理
  7. 聊聊rocketmq的SequenceProducerImpl
  8. 配置Keepalived双实例高可用Nginx
  9. 准备上线,切换到master分支,报错
  10. 《网络工程师软考辅导——3年真题详解与全真模拟》主要创新点、关注点