字符串加密问题 要求任意词组组合加密结果一致(200分)

  • 主题发起人 freeswordman
  • 开始时间
F

freeswordman

Unregistered / Unconfirmed
GUEST, unregistred user!
字符串加密问题
我在网上找到一个加密算法,对同样的字符串加密结果一样,
但是如果抽取其中的一段再加密结果并不是先前加密结果重的一段,
请问谁有好的加密算法。实现比如:'阿瑟发达三分'加密后d的结果包含对'发达'加密的结果
并且对加密结果是一致的即任意加密'阿瑟发达三分'结果都是同一个。谢谢
 
这样的加密算法不安全....
 
>>抽取其中的一段再加密结果并不是先前加密结果中的一段
大哥,只有做到这一点才能提高算法的抗破解能力呀。如果像你说的那样,那么攻击者就
可以通过简单的单词加密测试最终获得整篇文章的原文——比如,他只要检测'Delphi'的加
密结果在密文中的出现位置就可以知道明文中'Delphi'在哪里出现,进而推出整篇文章。

如果一定要实现你所说的功能,我看只有用密钥长度为1Byte的简单加密算法才能实现:

// XOR 加密/解密
function XorEncDec(AStr:String;Key:Byte):String;
var
i,n:Integer;
begin
n:=Length(AStr);
SetLength(Result,n);
for i:=1 to n do
Result:=Char(Byte(AStr) xor Key);
end;
//加法加密
function AddEnc(AStr:String;Key:Byte):String;
var
i,n:Integer;
begin
n:=Length(AStr);
SetLength(Result,n);
for i:=1 to n do
Result:=Char(Byte(AStr)+Key);
end;
//加法解密
function AddDec(AStr:String;Key:Byte):String;
var
i,n:Integer;
begin
n:=Length(AStr);
SetLength(Result,n);
for i:=1 to n do
Result:=Char(Byte(AStr)-Key);
end;

其中XorEncDec的加密/解密均为同一个过程,而加法加密、解密则需要两个过程配套使用。

eg:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=XorEncDec(Edit1.Text,123)
//加密(Edit1中存放明文,Edit2存放密文)
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=XorEncDec(Edit2.Text,123)
//解密(Edit2存放密文,Edit1中存放解密的明文)
end;
 
危险啊兄弟,你要弃明投暗啊?呵呵。

 
就是阿,那样很容易被crack的
 
感谢参与,现在已经解决,由于涉及商业机密不好将加密的过程透露
 
顶部