<font color=red>计算机英语</font>,好象糍粑拿它也没有办法。(200分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
用了个加密的第三方控件,Tcryptlib(可以到深度历险里下载)。在示例程序中,
设置密码的Edit:EditPwd
还有一个Edit:EditHash,
在EditHash旁边有一个label,说明EditHash:PassWord Hash(32bytes)
这个Hash在这里怎么解释好呢?
比如设置密码的时候,用下面的代码:
CryptLib1.Password:=Trim(EditPwd.Text);
EditHash.Text:=CryptLib1.PasswdHash;
EditChkHash.Text:=EditHash.Text;------
EditChkPwd.Text:=EditPwd.Text;
------后两行好像是检验密码的
其中PasswdHash的代码是:
function TCryptLib.PasswdHash : String;
begin
{ generate string hash value using FPassword and Salt (random value)
you can write this string to ini file or registry in order to
check your password in future }
InitKey;
EncryptCore(CrcArr, 16);
{ adding an random value depends of the system time to CRC of a random array }
Result:=IntToHex(CRC(CrcArr^) xor Salt,8)+IntToHex(Salt,8);
Dispose(CrcArr);
{ initilazed in InitKey }
Result:=EncryptStr(Result);
{ encrypting a result string }
end;
 
哈希函数...
 
Hash 应该是哈希散列表算法。
 
哈哈!
看来应该是哈希散列表算法了。
加密吗
 
My God...@#$%^&amp;*
 
faint, 程云老兄您在考gre还是托福?怎么背起英文单词来了?
 
呵呵,程云的糍粑版本新。我们公司的还是糍粑III
要这个EditHash有什么作用?
如果我自己用这个控件的时候,加密事件只会写一行:
“CryptLib1.Password:=Trim(EditPwd.Text);”
但例子里设置密码的代码是:
“CryptLib1.Password:=Trim(EditPwd.Text);
EditHash.Text:=CryptLib1.PasswdHash;
EditChkHash.Text:=EditHash.Text;
EditChkPwd.Text:=EditPwd.Text”
-----问题1:设置密码以后密码存放到哪里了?
检验密码是否正确的代码
“procedure TForm1.BtnChkPasswdClick(Sender: TObject);
begin
if CryptLib1.PasswdIsGood(trim(EditChkHash.Text), trim(EditChkPwd.Text))
then
ShowMessage('Your password is good !')
else
ShowMessage('Your password is bad !');
end;

-----问题2:如果不需要检验密码,hash 是否还是必须的?
如果hash还是必须的,我就得让运行时候Edithash不可见,代码写的真烂。。:(
 
是不是用hash加密?
 
sigh,这个加密可够简单的...
 
1、密码存在TCryptLib.FPassword中,通过某种计算
EncryptCore(CrcArr, 16);
将password存入CrcArr中,
然后
 IntToHex(CRC(CrcArr^) xor Salt,8)+IntToHex(Salt,8);
将CrcArr的CRC校验和与Salt相异或产生一个8位的数据,字符串化后加上随机种子salt的字符串化
再EncryptStr(Result);
(可能在这用了什么hash算法)
处理上面产生的字符串,得到加密后的结果字符串。
2、呵呵,hashedit不是一定要显示出来,你可以用一个变量保存就行了。
 
哎呀,程云那个帖子一出,我再在后面说话都难:)
我想那个hash 仅仅是加密“密码”的,所以不理hash了。
如果不要hash,结果出现一个错误
-------就是如果密码错误,解密失败以后,不提示任何信息;
if not FileExists(EditFile.Text) then
exit;
With CryptLib1do
begin
Infile :=EditFile.Text;
Outfile:=EditFile.Text;
DecryptFile;-----解密成功不成功这个DecryptFile都不吱声
end;

 
老千发这个控件给我怎么样?我怎么也上不了深度历险。:(
foxnt21cn@21cn.com
 
前段时间在家不能上网。现在还要不要?
 
给我也来一个把,zyy04rich@21cn.com
 
多人接受答案了。
 
后退
顶部