3DES加密算法 网上说是3次DES加密 但是算出结果不对 请贴出算法示例(16进制编码表示):
明文数据:0000000000000000
加密密钥:0123456789ABCDEFFEDCBA9876543210
加密结果:08D7B4FB629D0885密文数据:0000000000000000
解密密钥:0123456789ABCDEFFEDCBA9876543210
解密结果:C1E6E95D2166B5C4
明文数据:0000000000000000
加密密钥:0123456789ABCDEFFEDCBA9876543210
加密结果:08D7B4FB629D0885密文数据:0000000000000000
解密密钥:0123456789ABCDEFFEDCBA9876543210
解密结果:C1E6E95D2166B5C4
解决方案 »
- 本进程使用结构tagNMLISTVIEW 删除节点无效,求助??????
- 软件求购
- 大虾们,模态窗口中访问数据库,该怎么办
- 救命,在三层数据库中的客户端怎么使用光标的大问题!!!!!!!!!!!!
- 怎样将数据库中的数据导出为execl文件?
- 一个电脑装机报价系统,正在测试中
- 一个简单的问题
- 各位兄弟!那里有InstallShield for Delphi 5下载啊!急!!!
- 在线等待:记得有个可以实现WINDOWS桌面效果的控件,记不清哪里有下的了,哪位知道请告诉一下//准程序员
- delphi6的邦助也会发神精?
- win7 如何保存桌面主题?
- ClientDataSet,DataSource,DataSetProvider这3个控件怎么用
function EncryStr_3DES(Str, Key: String): String;
begin
if Length(Key) < 16 then
while Length(Key) < 16 do
Key := Key + Chr(0);
Result := EncryStr(Str, Copy(Key, 1, 8));
Result := DecryStr(Result, Copy(Key, 9, 8));
Result := EncryStr(Result, Copy(Key, 1, 8));
end;
算出来的结果不对
Result := EncryStr(Str, Copy(Key, 1, 8));
Result := DecryStr(Result, Copy(Key, 9, 8));
Result := EncryStr(Result, Copy(Key, 17, 8));
如果不行, 你要检查一下你传入的内容了, 实际上给出的内容是字符串的模式, 你就必须转, 比如 00000000 是指内存的 00000000 是source := #0#0#0#0#0#0#0#0; 而不是
source := '00000000' 这个你必须是在delphi7版本里做.
source := #0#0#0#0#0#0#0#0;
key := #$01#$23#$45#$67#$89#$AB#$CD#$EF#$FE#$DC#$BA#$98#$76#$54#$32#$10
出来的结果你在编译器里直接调试Dump 出8个字节的内存值就是08D7B4FB629D0885, 你不能直接看String的值那个是不对的, Des的作者是为了方便才这么写的, 其实这样很容易让人误解