首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用TurboPower锁相框3.5检测解密失败

如何使用TurboPower锁相框3.5检测解密失败
EN

Stack Overflow用户
提问于 2016-02-12 09:55:16
回答 1查看 315关注 0票数 1

如何检测解密失败?我有以下测试代码:

代码语言:javascript
复制
procedure TForm1.Button1Click(Sender: TObject);
var 
 plainms, cipherms: TMemoryStream;
 tempstr: string;

begin
  plainms := TMemoryStream.Create;
  cipherms := TMemoryStream.Create;
  try
    cipherms.LoadFromFile('rwcx.ini');
    Codec1.Password := '122rkdkdk';  
    try
     Codec1.DecryptStream(plainms, cipherms);
    except on E: Exception do
      showmessage(e.Message);
    end;
    plainms.Position := 0;
    SetLength(tempstr, plainms.Size * 2);
    BinToHex(plainms.Memory, PChar(tempstr), plainms.Size);
    showmessage(tempstr);
  finally
    plainms.Free;
    cipherms.Free;
  end;
end;

文件"rwcx.ini“只是一个不包含加密数据的纯文本文件。我使用AES 256与CBC和版本3.5的洛克箱安装“GetIt”。我预期当解密保证失败时,平原内存流将是空的,或者会引发异常。相反,我总是收到垃圾,而且也不例外。

如何检测解密失败?我必须能够发现错误的密码或损坏的输入数据。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-12 12:34:04

加密只是一种变换,本身并没有正确解密的概念。

一种方法是创建加密数据的HMAC,并将其加到加密的数据中,在解密HMAC时对加密的数据进行比较。请小心使用HMAC比较函数,该函数用于匹配值和非匹配值所需的时间相同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35359529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档