请教DES算法的初始密钥和初始向量是怎么产生的

Hell_Knight 2009-03-06 02:31:35
毕设做了个简单的存储系统,允许用户用DES算法加密自己存储的数据。考虑到全部让用户自己选择初始密钥和初始向量太麻烦,于是想加入系统自动生成密钥和初始向量的功能。请问密钥和向量是如何生成的?
...全文
1223 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyang0402 2009-05-05
  • 打赏
  • 举报
回复
OpenSSL命令行中是输入口令

再由输入口令产生初始化密钥和初始向量
wanganl 2009-04-17
  • 打赏
  • 举报
回复
我当时做RSA密钥生成,就是取的毫秒,而且做了些延时语句。秒以上的根本不敢取。计算机运行速度太快,一秒钟以内就把所有的任务都完成了。哈哈。
还没淹死的鱼 2009-04-17
  • 打赏
  • 举报
回复
伪随机也可以做成不可重复的, 比如多取几次种子, 或取时间时取到毫秒级, 重复的概率就很小了
wanganl 2009-04-16
  • 打赏
  • 举报
回复
此外,还有个笨方法,就是密钥也固定,但绝对不公开,存在软件里别往外泄露就是了。反正DES算法允许一个密钥使用多次。
该方法仅供参考,别写在论文里。写在论文里会遭到鄙视的呵呵。
wanganl 2009-04-16
  • 打赏
  • 举报
回复
楼主的问题可以转化为如何获得随机数:

C语言里有随机函数,如果直接调用,该随机函数每次都返回一个相同的随机数,所以,我们应该加入“随机种子”,这个种子用时间来做,最好不过。加入的方法嘛,给你两个链接,里面有详细的例子。
http://hi.baidu.com/c_program/blog/item/e6abe6278101950b908f9df7.html
http://blog.163.com/liugang_a1/blog/static/1511563620092302321532/

我以前做过类似的,我记得是每次生成4比特随机数。那么,64比特的DES源密钥只需要16次循环即可生成。
fonix 2009-03-15
  • 打赏
  • 举报
回复
让用户输入口令,从口令派生出密钥,比如 key = MD5(password)
密钥任何地方都不存,生成,使用之后,抛弃
下次用户需要输入正确的password才能解密文件

楼上的方案,没有真正解决问题,只是把问题转嫁到密钥如何保存这个问题上
漫天飞花 2009-03-11
  • 打赏
  • 举报
回复
可以随机生成。再把密钥保存起来
SummerMVP的gravatar头像 SummerMVP2020-04-18 15:25:44原C++实现DES算法四种模式ECB,CBC,OFB,CFB 项目描述 1. 分别实现 ECB、CBC、CFB、OFB 这四种操作模式的 DES。每种操作模式都有一组对应的测试数据, 以便检查程序的正确性。其中,CFB 操作模式为 8 位 CFB 操作模式,OFB 操作模式为 8 位 OFB 操作模 式。 2. 要求以命令行的形式,指定明文文件、密钥文件、初始向量文件的位置和名称、加密的操作模式以 及加密完成后密文文件的位置和名称。加密时先分别从指定的明文文件、密钥文件和初始向量文件中 读取有关信息,然后按指定的操作模式进行加密,最后将密文(用 16 进制表示)写入指定的密文文件。 命令行的具体格式如下: e1des -p plainfile -k keyfile [-v vifile] -m mode -c cipherfile 参数: -p plainfile 指定明文文件的位置和名称 -k keyfile 指定密钥文件的位置和名称 -v vifile 指定初始向量文件的位置和名称 -m mode 指定加密的操作模式 -c cipherfile 指定密文文件的位置和名称。 3. 分别实现对每种操作模式下加密及解密速度的测试,要求在程序中生成 5MB 的随机测试数据(不要 求使用随机数发生器),连续加密、解密 20 次,记录并报告每种模式的加密和解密的总时间(毫秒)和 速度(MByte/秒)。 4. 用 C 和/或 C++语言完成程序。 运行环境 vs2012 项目技术(必填) DES C++

4,451

社区成员

发帖
与我相关
我的任务
社区描述
云计算 云安全相关讨论
社区管理员
  • 云安全社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧