当前位置:  技术问答>linux和unix

求助DES加密问题

    来源: 互联网  发布时间:2016-12-24

    本文导语:  我想测试一下DES_ncbc_encrypt,所以写了段代码: void cbc_test() {     DES_cblock key;     DES_cblock ivec;     DES_key_schedule schedule;     UINT8 input[8];     UINT8 output[8];     int i;     for (i = 0; i =0; l-=8) { c2l...

我想测试一下DES_ncbc_encrypt,所以写了段代码:

void cbc_test()
{
    DES_cblock key;
    DES_cblock ivec;
    DES_key_schedule schedule;
    UINT8 input[8];
    UINT8 output[8];
    int i;
    for (i = 0; i =0; l-=8)
{
c2l(in,tin0);
c2l(in,tin1);
tin0^=tout0; tin[0]=tin0;
tin1^=tout1; tin[1]=tin1;
DES_encrypt1((DES_LONG *)tin,_schedule,DES_ENCRYPT);
tout0=tin[0]; l2c(tout0,out);
tout1=tin[1]; l2c(tout1,out);
}
if (l != -8)
{
c2ln(in,tin0,tin1,l+8);
tin0^=tout0; tin[0]=tin0;
tin1^=tout1; tin[1]=tin1;
DES_encrypt1((DES_LONG *)tin,_schedule,DES_ENCRYPT);
tout0=tin[0]; l2c(tout0,out);
tout1=tin[1]; l2c(tout1,out);
}
#ifndef CBC_ENC_C__DONT_UPDATE_IV
iv = &(*ivec)[0];
l2c(tout0,iv);
l2c(tout1,iv);
#endif
}
else
{
c2l(iv,xor0);
c2l(iv,xor1);
for (l-=8; l>=0; l-=8)
{
c2l(in,tin0); tin[0]=tin0;
c2l(in,tin1); tin[1]=tin1;
DES_encrypt1((DES_LONG *)tin,_schedule,DES_DECRYPT);
tout0=tin[0]^xor0;
tout1=tin[1]^xor1;
l2c(tout0,out);
l2c(tout1,out);
xor0=tin0;
xor1=tin1;
}
if (l != -8)
{
c2l(in,tin0); tin[0]=tin0;
c2l(in,tin1); tin[1]=tin1;
DES_encrypt1((DES_LONG *)tin,_schedule,DES_DECRYPT);
tout0=tin[0]^xor0;
tout1=tin[1]^xor1;
l2cn(tout0,tout1,out,l+8);
#ifndef CBC_ENC_C__DONT_UPDATE_IV
xor0=tin0;
xor1=tin1;
#endif
}
#ifndef CBC_ENC_C__DONT_UPDATE_IV 
iv = &(*ivec)[0];
l2c(xor0,iv);
l2c(xor1,iv);
#endif
}
tin0=tin1=tout0=tout1=xor0=xor1=0;
tin[0]=tin[1]=0;
}

|

ivec叫做初始化向量。CBC(cipher-block-chaining)模式是一种链式加密模式
明文按8字节分块:P1,P2,...Pn,
密文按8字节分块:C1,C2,...Cn.
初始化向量为 C0
加密过程为:
C1 = DES(P1 XOR C0), C2 = DES(P2 XOR C1) ... Cn = (Pn XOR Cn-1)
楼主的问题在于DES_ncbc_encrypt会改变ivec,
DES_ncbc_encrypt(input, output, 8, &schedule, &ivec, DES_ENCRYPT);
运行后ivec等于最后一块密文Pn,这样便于继续进行CBC加密。
楼主需要重新设置ivec, 揭秘才能得到正确结果。

#include 
#include 

int main(void)
{
        DES_cblock key;
        DES_cblock ivec;
        DES_key_schedule schedule;
        DES_cblock input;
        DES_cblock output;
        int i;

        for (i = 0; i 

    
 
 

您可能感兴趣的文章:

  • des加密问题求助
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • module的问题.版本问题 求助
  • 求助关于linux和windows引导lilo的问题
  • 求助~~求助 ~~linux文件读写问题
  • 求助! 又出现问题了!
  • 一个简单的问题,高分求助!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • socket实现多文件并发传输,求助多线程实现问题?
  • 各位大侠,求助一个关于ubuntu系统的问题
  • 100分求助,Ubuntu安装问题
  • linux的 iptables问题求助
  • 100分求助:关于linux下配置sendmail的问题
  • 急求助!安装linux后重装windows的问题
  • QT中关于方向键控制焦点的问题(求助)
  • 求助关于__cdecl的使用问题
  • 求助: 在ubuntu11.04上的有线连接问题
  • 急!!!小弟刚刚接触linux 在线求助<很简单的问题>
  • 求助: RedHat as4 内网正常,无法访问外网的问题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • 高分求助
  • 紧急求助java多线程编程!!!!!!!!!!!!!
  • 高分求助foxpro的jdbc驱动程序!!!!
  • ~(取反)操作错误,求助!谢谢
  • 求助:在Java中如何获得当前系统的CPU型号?
  • RPM紧急求助
  • 求助:如何在UNIX下访问已经在WINDOWS下安装好的ORACLE?
  • 求助!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3