delphi源碼加密
1. delphi實現的DES加密,當輸入明文為64位的時候,輸出密文為128位。這是為什麼應該如何修改程序
那是因為你調用的方法是把des加密後的密文的每一位都轉成16進制了,16進制不夠兩位,前面自動補0了。要修改的話,把加密解密方法轉16進制的代碼注釋了就可以了。
2. 誰能告訴我,源代碼加密,用什麼可以
這個就要用專業的源代碼加密軟體去加密了。因為源代碼涉及到的編譯環境會相對復雜的。我目前了解到就是天銳綠盾這個品牌的加密軟體。
綠盾源代碼加密系統在不改變研發人員原有工作習慣和工作流程的情況下,對EditPlus、Notepad++、ultraEdit、Eclipse、MyEclipse、 Keil、Visusl
studio等源代碼開發工具,以及CAM350、PADS、Altium
Designer、Cadence、MentorGraphics等電路設計軟體進行受控加密保護。源代碼文件加密後,不影響軟體的正常編譯,合法用戶正常雙擊打開,在授權范圍內使用。
3. Delphi常用的字元串(密碼)加密方式都有哪幾種哪種方法可以將數字字母混合加密成純數字
多了,des、aes、base64、rsa、md5、sha等等,等等,數不勝數。每一種演算法,都可以將數字字母加密成純數字。因為加密的結果可以再加密。比如aes加密後的密文,是16進制的東西,我們可以把這個結果轉換成10進制,不就成了純數字了嗎?所以,所有演算法,都可以實現你所說的。
4. 在delphi中怎樣實現SHA1加密
方法一、使用 delphi 內置函數。
delphi 的 IdHashSHA 單元,提供了 TidHashSHa1 類,可以實現 SHA1 加密。
方法二、使用第三方控制項。
如:CnPack 小組提供的 CnSHA1。示例代碼如下:
procereTForm1.btnSha1Click(Sender:TObject);
begin
{$IFDEFUNICODE}
pnlSha1.Caption:=SHA1Print(SHA1StringA(AnsiString(edtSha1.Text)));
{$ELSE}
pnlSha1.Caption:=SHA1Print(SHA1String(edtSha1.Text));
{$ENDIF}
end;
5. Delphi的MD5加密演算法為什麼加密中文有問題
md5是基於位元組加密的,無論是delphi還是c#之類的,如果字元串編碼不同(比如是用utf8、gbk還是unicode),那加密的結果自然都不一樣。
6. 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;
7. delphi 中這4個都是關於加密的MD5String、MD5File、MD5Print、MD5Match,請問解密的演算法怎麼實現。
MD5是單向加密,不存在解密。
是一個公開的演算法,一般用於文件的數字簽名
想解密的話應該只能做一個庫去記錄下比如某個字元經過MD5加密後的值。
記得好像有專門查詢MD5加密前值的網站。
你所說的四個加密函數應該是delphi對MD5加密的再次封裝,理論上一樣的