C/C++/.NET 语言考试题(加密/解密)

 开发环境: Windows + Vs2008/Vs2010
开发需求描述:
    使用用户输入加密密钥(字符串必须大于8个字符) K1...Kn,对一指定的二进制内容B1B2....Bn进行加密运算,具体的加密过程分为如下几步:
    1.分块,将输入的二进制内容(一般从文件中读入)块按照128位进行分块,这样我们得到块区S1S2...Sn,不足部分使用0来填补。
    2.置换,按照一个简单的规则进行置换,即将128位组成一个封闭环,每个位跟比自己在位置上大16的那个位进行置换,临近末尾的位替换使用环形规则进位后进行替换,具体举例置换的位调换关系如下:
        1   2    3   4    5   6   7  ....  125 126 127 128
       17 18 19 20 21 22 23 ....  13   14   15    16
 此轮置换进行6轮。

     3.密钥异或,将输入密码K1累加一遍直接按照128位截断对齐,举例而言,如果用户输入了9个字符A1A2A3A4A5A6A7A8A9,使用了上述对齐截断后组合为A1A2A3A4A5A6A7A8A9A1A2A3A4A5A6A7,形成了密钥串后直接按照如下方式进行3轮异或计算:
        第一轮密钥使用A1A2A3A4A5A6A7A8A9A1A2A3A4A5A6A7;
        第二轮密钥使用A1A2A3A4A5A6A7A8A9A1A2A3A4A5A6A7环移了6位(环形移位,具体规则同第2步中的原文置换移位);
        第三轮密钥使用A1A2A3A4A5A6A7A8A9A1A2A3A4A5A6A7环移了12位(环形移位,具体规则同第2步中的原文置换移位);
 
 4.组合,将生成密文块区进行组合并且分块写到密文文件当中。

提交制品要求:
   1. 请依照上述要求设计一个加密算法的DLL(windows),并且设计相应的加密与解密函数API。
   2. 针对你设计的加密、解密API以及其他辅助函数,定义你自己的品质要求目标,撰写单体测试用例以实现你的品质控制目标;
   3. 针对你的DLL以及API,请提供Sample供其他开发者调用(Console或者GUI程序供用户使用检测你的加密算法)。
   4. 要求提交的制品能够在Vs开发环境中直接编译运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值