Board logo

Subject: CnDES加密解密好像有问题 [Print This Page]

Author: nxfbccu    Time: 2010-7-22 10:44     Subject: CnDES加密解密好像有问题

经多次测试,用DESEncryptStr与DESDecryptStr加密解密时,当源字符串不值有时候是对的有时候会解密出来不对,很容易出现在这种问题
比如:KEY:1;源字符串:ffregtrewwe3rwer;解决出来为:ffregtre
都是AnsiString类型
Author: nxfbccu    Time: 2010-7-22 10:46

用HEX这套就没发现有什么问题
Author: Passion    Time: 2010-7-22 20:24

请问您的D是什么版本?“当源字符串不值”是啥意思?
Author: Passion    Time: 2010-7-22 20:32

DESEncryptStr加密生成的字符串可能含有不可打印字符,如果将其赋值给Edit的Text或其他界面显示相关的属性,则可能被截断,从而出现解密后丢失内容的问题。
推荐用AnsiString保存返回值,或者改用DESEncryptStrToHex与DESDecryptStrFromHex两个函数,它们的返回值是十六进制可读字符串。
Author: nxfbccu    Time: 2010-7-22 22:05

对,就是这种现象,感觉就是被截断了
我测试是用的就是控件的EDIT的TEXT
我不用控件用变量试试
Author: nxfbccu    Time: 2010-7-22 22:16

变量是可以,这样有点不方便的地方是,不能存储成功文件,比如将某个配置文件加密,如果加密后有不可打印的字符被截断再存储成加密后的文件,再解密出来就不对了
当然用HEX是没问题,只是内容比较长
Author: Passion    Time: 2010-8-2 13:22

DES加密是会产生不可显示字符,躲不过被截断的现象。不用HEX的话也可以再来一次Base64,不过也会增加长度,只是比HEX能短些。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0