导航:首页 > 源码编译 > delphi加密解密算法

delphi加密解密算法

发布时间:2022-09-06 16:43:09

⑴ 求对应 delphi 加密 解密 java代码!

简单解密算法:Java程序解密。解密是将每个字符提取出来与一个固定值进行异或,实现解密。
public String Decode(final String aStr,char akey){
StringBuffer result = new StringBuffer();
char tmp;
for(int i = 0; i < aStr.length() ; i++){
tmp = (aStr.charAt(i) - c_PublicKey2)/c_PublicKey1^akey;
result.append(tmp);
}
return result.toString();
}

⑵ delphi 中这4个都是关于加密的MD5String、MD5File、MD5Print、MD5Match,请问解密的算法怎么实现。

MD5是单向加密,不存在解密。
是一个公开的算法,一般用于文件的数字签名
想解密的话应该只能做一个库去记录下比如某个字符经过MD5加密后的值。
记得好像有专门查询MD5加密前值的网站。
你所说的四个加密函数应该是delphi对MD5加密的再次封装,理论上一样的

⑶ delphi 加密算法

我用的加密解密
function EncryptString(Source, Key: string): string;
//对字符串加密(Source:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
Range: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Range := 256;
randomize;
Offset := random(Range);
Dest := format('%1.2x', [Offset]);
for SrcPos := 1 to Length(Source) do
begin
SrcAsc := (Ord(Source[SrcPos]) + Offset) mod 255;
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
SrcAsc := SrcAsc xor Ord(Key[KeyPos]);
Dest := Dest + format('%1.2x', [SrcAsc]);
Offset := SrcAsc;
end;
result := Dest;
end;
function UnEncryptString(Source, Key: string): string;
//对字符串解密(Src:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Offset := strtoint('$' + (Source, 1, 2));
SrcPos := 3;
repeat
SrcAsc := strtoint('$' + (Source, SrcPos, 2));
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc <= Offset then
TmpSrcAsc := 255 + TmpSrcAsc - Offset
else
TmpSrcAsc := TmpSrcAsc - Offset;
Dest := Dest + chr(TmpSrcAsc);
Offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Source);
result := Dest;
end;

⑷ 如何用Delphi实现 淘宝接口加密解密SDK的功能

淘宝最新接口加密解密的功能,淘宝提供JAVA/php/.NET SDK:
自研SDK规范:
1. 加密算法要求:AES/CBC/PKCS5Padding,秘钥长度128位。
2. 获取密钥的缓存是否只应该放在内存中,在服务启动后从接口拉取。禁止存放在数据库、硬盘文件、OSS等持久化存储的地方。
3. 模糊查询部分功能,如不使用,可不实现。
4. 设置密钥的过期时间,过期重新拉取。秘钥的过期时间,在获取秘钥的接口会返回的,控制权在于top服务端。
秘钥获取接口 :taobao.top.secret.get
5. 请回传密钥的加密、解密调用次数。具体标准:加、解密调用函数每次调用,对应的计数器(各种类型计数器)会+1,5分钟左右同步一次。
异步线程会把计数器同步到top api接口: taobao.top.sdk.feedback.upload。
具体实现请参考 JAVA SDK。
最好用Delphi直接调用JAVA类实现加密解密。

⑸ delphi 数字加密和解密算法

function Enc(Str:String):String;//字符加密函数 这是用的一个异或加密
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) do
begin
Result:=Result+IntToHex(Byte(Str[i]) xor XorKey[j],2);
j:=(j+1) mod 8;
end;
end;

function Dec(Str:String):String;//字符解密函数
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) div 2 do
begin
Result:=Result+Char(StrToInt('$'+Copy(Str,i*2-1,2)) xor XorKey[j]);
j:=(j+1) mod 8;
end;
end;

⑹ delphi 数字加密和解密算法。

最简单的加密解密,哈哈
var
A1: String;
A2: String;
//初始化
A1 := '1234567890';
A2:= 'abcdefghij';
//加密
function GetEnCode(A: String): String;
var
I,J: Integer;
begin
for I:=1 to Length(A) do
begin
J :=StrToInt(A[i])
if J=0 then J := 10;
Result := Result + A2[J]
end
end;
//解密
function GetDeCode(A: String): String;
var
I,J: Integer;
begin
for I:=1 to Length(A) do
begin
J :=Pos(A[i], A2)
Result := Result + A1[J]
end
end;

⑺ 帮我分析一下这段DELPHI 就怎么算法加密的!

你的那段加密解密函数应该是用的这个吧?

//加密函数String:需要加密的字符串.Key密钥
FunctionEncrypKey(Src:String;Key:String):string;
var
idx:integer;
KeyLen:Integer;
KeyPos:Integer;
offset:Integer;
dest:string;
SrcPos:Integer;
SrcAsc:Integer;
TmpSrcAsc:Integer;
Range:Integer;

begin
KeyLen:=Length(Key);
ifKeyLen=0thenkey:='ThinkSpace';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
Randomize;
offset:=Random(Range);
dest:=format('%1.2x',[offset]);
forSrcPos:=1toLength(Src)do
begin
SrcAsc:=(Ord(Src[SrcPos])+offset)MOD255;
ifKeyPos<KeyLenthenKeyPos:=KeyPos+1elseKeyPos:=1;
SrcAsc:=SrcAscxorOrd(Key[KeyPos]);
dest:=dest+format('%1.2x',[SrcAsc]);
offset:=SrcAsc;
end;
Result:=Dest;
end;

//解密函数String:需要解密的字符串.Key密钥
FunctionUncrypKey(Src:String;Key:String):string;
var
idx:integer;
KeyLen:Integer;
KeyPos:Integer;
offset:Integer;
dest:string;
SrcPos:Integer;
SrcAsc:Integer;
TmpSrcAsc:Integer;
Range:Integer;
begin
KeyLen:=Length(Key);
ifKeyLen=0thenkey:='ThinkSpace';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
offset:=StrToInt('$'+(src,1,2));
SrcPos:=3;
repeat
SrcAsc:=StrToInt('$'+(src,SrcPos,2));
ifKeyPos<KeyLenThenKeyPos:=KeyPos+1elseKeyPos:=1;
TmpSrcAsc:=SrcAscxorOrd(Key[KeyPos]);
ifTmpSrcAsc<=offsetthen
TmpSrcAsc:=255+TmpSrcAsc-offset
else
TmpSrcAsc:=TmpSrcAsc-offset;
dest:=dest+chr(TmpSrcAsc);
offset:=srcAsc;
SrcPos:=SrcPos+2;
untilSrcPos>=Length(Src);
Result:=Dest;
end;

⑻ 翻译delphi加密解密代码TO C#--有delphi加密代码求C#解密代码

php,jsp,delphi多语言兼容的简单的加密解密算法,jsp目前暂时没有实现中文的加密解密兼容。希望哪路高手能帮忙补上。
1,php的需要对以上代码稍加修改,内容如下:
<?php

$key = "admin";

function keyED($txt,$encrypt_key) {
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++){
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
return $tmp;
}

function encrypt($txt,$key){
srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++){
if ($ctr==strlen($encrypt_key)) $ctr=0;
$bbb=substr($encrypt_key,$ctr,1) .
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
$tmp.= $bbb;
$ctr++;
}
return base64_encode(keyED($tmp,$key));
}

function decrypt($txt,$key){
$txt=base64_decode($txt);
$txt = keyED($txt,$key);
$tmp = "";
for ($i=0;$i<strlen($txt);$i++){
$md5 = substr($txt,$i,1);
$i++;
$tmp.= (substr($txt,$i,1) ^ $md5);
}
return $tmp;
}

$string = "hello world!";

// encrypt $string, and store it in $enc_text
$enc_text = encrypt($string,$key);

// decrypt the encrypted text $enc_text, and store it in $dec_text
$dec_text = decrypt($enc_text,$key);
echo "原字符串: ".$string."<br/>";
echo "加密字符串: ".$enc_text."<br/>";
echo "解密字符串: ".$dec_text."<br/>";
?>
2,jsp代码(java类)
package com.intwork.struct.common;

import java.util.Random;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class KeyED {

public char[] keyED(char[] cText,String encrype_key){
encrype_key=MD5.getInstance(encrype_key).encrypt();
int ctr=0;
char[] cEncrype_key=encrype_key.toCharArray();
char[] temp=new char[cText.length];
int ind=0;
String tmp="";
for(int i=0;i<cText.length;i++){
if(ctr==cEncrype_key.length){
ctr=0;
}
temp[ind++]=(char)(cText[i] ^ cEncrype_key[ctr]);
ctr++;
}
return temp;
}

public String encrype(String text,String key){
String encrype_key=MD5.getInstance(String.valueOf(new Random().nextInt(1000000))).encrypt();
int ctr=0;
char[] cText=text.toCharArray();
char[] cEncrype_key=encrype_key.toCharArray();
char[] temp=new char[cText.length*2];
int ind=0;
String tmp="";
for(int i=0;i<cText.length;i++){
if(ctr==cEncrype_key.length){
ctr=0;
}
temp[ind++]=cEncrype_key[ctr];
temp[ind++]=(char)(cText[i]^cEncrype_key[ctr]);
ctr++;
}
BASE64Encoder b = new sun.misc.BASE64Encoder();
return b.encode(new String(this.keyED(temp,key)).getBytes());
}

public String decrype(String text,String key)throws Exception{
BASE64Decoder decoder = new BASE64Decoder();
text=new String(decoder.decodeBuffer(text));
char[] cText=text.toCharArray();
char[] temp=new char[cText.length/2];
int ind=0;
cText=this.keyED(cText, key);
String tmp="";
for(int i=0;i<cText.length;i++){
char md5=cText[i];
i++;
temp[ind++]=(char)(cText[i]^md5);
}
return new String(temp);
}
}

3,delphi代码(只有加密代码,没写解密代码。有兴趣的可以给补上)

function Tfrmunmsgmain.EnPlugPwcrypt(str, skey: string): string;
//加密插件用的字符串
var
IdEncoder64: TIdEncoderMIME;
sencrypt_key, stemp, stemp1 : string;
ictr, i : Integer;
ifirst, ilast : Integer;

function enpwcrypt(str, skey: string): string;
//获取加密后的字符串
var
stemp, sencrypt_key : string;
ictr, i : Integer;
ifirst, ilast : Integer;
begin
try
result := '';
try
sencrypt_key := LowerCase(UMD5Crypt.UGetMd5Str(skey));
ictr := 1;
stemp := '';
for I := 1 to length(str) do
begin
if (ictr = length(sencrypt_key)) then
ictr := 1;
ifirst := Ord(midstr(str,i,1)[1]);
ilast := Ord(midstr(sencrypt_key,ictr,1)[1]);
stemp := stemp +
chr((ifirst) XOR (ilast));
inc(ictr);
end;
result := stemp;
except

end;
except

end;
//
end;

begin
try
result := '';
try
IdEncoder64 := TIdEncoderMIME.Create(Application);
sencrypt_key := LowerCase(UMD5Crypt.UGetMd5Str(inttostr((Random(100000)))));
ictr := 1;
stemp := '';
stemp1 := '';
for I := 1 to length(str) do
begin
if (ictr = length(sencrypt_key)) then
ictr := 1;
ifirst := Ord(midstr(str,i,1)[1]);
ilast := Ord(midstr(sencrypt_key,ictr,1)[1]);
stemp1 := midstr(sencrypt_key,ictr,1) +
chr((ifirst) XOR (ilast));
stemp := stemp + stemp1;
inc(ictr);
end;
result := IdEncoder64.Encode(enpwcrypt(stemp, skey))
finally
freeandnil(IdEncoder64);
end;
except

end;
end;

⑼ Delphi加密算法

我用的加密解密
function EncryptString(Source, Key: string): string;
//对字符串加密(Source:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
Range: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Range := 256;
randomize;
Offset := random(Range);
Dest := format('%1.2x', [Offset]);
for SrcPos := 1 to Length(Source) do
begin
SrcAsc := (Ord(Source[SrcPos]) + Offset) mod 255;
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
SrcAsc := SrcAsc xor Ord(Key[KeyPos]);
Dest := Dest + format('%1.2x', [SrcAsc]);
Offset := SrcAsc;
end;
result := Dest;
end;
function UnEncryptString(Source, Key: string): string;
//对字符串解密(Src:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Offset := strtoint('$' + (Source, 1, 2));
SrcPos := 3;
repeat
SrcAsc := strtoint('$' + (Source, SrcPos, 2));
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc <= Offset then
TmpSrcAsc := 255 + TmpSrcAsc - Offset
else
TmpSrcAsc := TmpSrcAsc - Offset;
Dest := Dest + chr(TmpSrcAsc);
Offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Source);
result := Dest;
end;

阅读全文

与delphi加密解密算法相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:768
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:843
安卓怎么下载60秒生存 浏览:802
外向式文件夹 浏览:239
dospdf 浏览:430
怎么修改腾讯云服务器ip 浏览:391
pdftoeps 浏览:495
为什么鸿蒙那么像安卓 浏览:735
安卓手机怎么拍自媒体视频 浏览:185
单片机各个中断的初始化 浏览:723
python怎么集合元素 浏览:480
python逐条解读 浏览:832
基于单片机的湿度控制 浏览:498
ios如何使用安卓的帐号 浏览:882
程序员公园采访 浏览:811
程序员实战教程要多长时间 浏览:976
企业数据加密技巧 浏览:134
租云服务器开发 浏览:813
程序员告白妈妈不同意 浏览:335
攻城掠地怎么查看服务器 浏览:600