字符串的加密解密,顶者有分(200分)

  • 主题发起人 主题发起人 zhlfdm
  • 开始时间 开始时间
Z

zhlfdm

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有人知道把一个字符串(本身是1-9,a-z,A-Z) 加密成(1-9,a-z,A-Z)之间的字符。且能解密的。算法是什么。急用。顶者有分
 
有N种办法
可以用成型的算法
也可以自己定义算法
 
能不能给个例子
 
看一下BASE64编码
 
谁能做个例子来看看
 
用MD5标准加密算法就可以了,源码网上多的是
 
网上我看了。没找到符合我的要求的原码。有人找到了给我贴一下吧
 
你加密字符串就行了,还要搞这么多事!??还要加密后还是(1-9,a-z,A-Z)之间的字符
那按你这样说的!
把字符串倒过来不就行了!0a1b2c3d4e变成e4d3c2b1a0不就行了!
还搞那么麻烦干什么?
 
这么快就沉了
 
to:清新空气
我是要用户返回东西的
难道我给人看那些乱码的东西吗
 
加密字符串的代码谁都有!只不过不想再麻烦再想
把一个字符串(本身是1-9,a-z,A-Z) 加密成(1-9,a-z,A-Z)之间的字符;
 
把字串倒过来,delphi 自带了一个函数
 
to zhlfdm;
早说啥!这太简单了!按常用的字符串加密的方法!
把返回的字符串做处理就可以了!
如果not (str in ['0'..'9','a'..'z','A'..'Z']) 则
把这个字符用一个特定的显示即可!比如0之类的!
不就结了?
 
倒,自己做一个字符对应表不就行了?
 
给你一个简单的例子:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StrUtils, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
LCW:Integer;
LS2E:Integer;
LAM:Integer;
MP:Integer;
Matrix:String;
mov1:String;
mov2:String;
CodeWord:String;
CWL:String;
EncryptedString:String;
EncryptedLetter:String;
strCryptMatrix:array[0..96] of String;
procedure SetKeyStringProperty(sKeyString:String);
Function Encrypt(mstext:String):String;
procedure CreateInitialize();
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.SetKeyStringProperty(sKeyString:String);
begin
CodeWord:=sKeyString;
End;

Function TForm1.Encrypt(mstext:String):String;
var X:Integer;
Y:Integer;
Z:Integer;
C2E:String;
Str2Encrypt:String;
begin
Str2Encrypt := mstext;
LS2E := Length(mstext);
LCW := Length(CodeWord);
EncryptedLetter := '';
EncryptedString := '';

Y := 1;
For X := 1 To LS2E do begin
C2E := copy(Str2Encrypt, X, 1);
MP := Pos(C2E,Matrix);
CWL := Copy(CodeWord, Y, 1);
For Z := 1 To LAM do begin
If copy(strCryptMatrix[Z], MP, 1) = CWL Then begin
EncryptedLetter := Leftstr(strCryptMatrix[Z], 1);
EncryptedString := EncryptedString + EncryptedLetter;
break
End;
end;
Y := Y + 1;
If Y > LCW Then Y := 1;
end;
Result := EncryptedString;
End;

procedure TForm1.CreateInitialize();
var W:Integer;
X:Integer;
begin
Matrix := '8x3p5BeabcdfghijklmnoqrstuvwyzACDEFGHIJKLMNOPQRSTUVWXYZ1246790';
// Matrix := Matrix + Chr(13);
// Matrix := Matrix + Chr(10);
// Matrix := Matrix + Chr(34);
W := 1;
LAM := Length(Matrix);
strCryptMatrix[1] := Matrix;

For X := 2 To LAM do begin
mov1 := LeftStr(strCryptMatrix[W], 1);
mov2 := RightStr(strCryptMatrix[W], (LAM - 1));
strCryptMatrix[X] := mov2 + mov1;
W := W + 1;
end;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetKeyStringProperty('AAA');
edit2.Text:=Encrypt(edit1.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
CreateInitialize;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit3.Text:=Encrypt(edit2.Text);
end;

end.
 
按照你的直接引用EncdDecd.pas单元就可以了,
DELPHI自带,函数自带,encryptstring ,decryptstring.
 
to:
weiliu
俺比较笨
如何做对应表呀
求教
 
推荐des算法, delphi自带的也很好。
 
在Matrix中任意改变顺序加密就不一样,还可以添加其他可见字符,先运行Button1Click加密edit1.text到edit2.text,马上再运行Button2Click将edit2.text解密到edit3.text,即edit1.text的值
 
后退
顶部