日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

java delphi aes加密算法_谁有C#与delphi通用的AES加密算法

發布時間:2023/12/16 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java delphi aes加密算法_谁有C#与delphi通用的AES加密算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

unit?AES;

interface

uses

SysUtils,?Classes,?Math,?ElAES;

type

TKeyBit?=?(kb128,?kb192,?kb256);

function?StrToHex(Value:?string):?string;

function?HexToStr(Value:?string):?string;

function?EncryptString(Value:?string;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?string;

function?DecryptString(Value:?string;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?string;

function?EncryptStream(Stream:?TStream;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?TStream;

function?DecryptStream(Stream:?TStream;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?TStream;

procedure?EncryptFile(SourceFile,?DestFile:?string;

Key:?string;?KeyBit:?TKeyBit?=?kb128);

procedure?DecryptFile(SourceFile,?DestFile:?string;

Key:?string;?KeyBit:?TKeyBit?=?kb128);

implementation

function?StrToHex(Value:?string):?string;

var

I:?Integer;

begin

Result?:=?'';

for?I?:=?1?to?Length(Value)?do

Result?:=?Result?+?IntToHex(Ord(Value[I]),?2);

end;

function?HexToStr(Value:?string):?string;

var

I:?Integer;

begin

Result?:=?'';

for?I?:=?1?to?Length(Value)?do

begin

if?((I?mod?2)?=?1)?then

Result?:=?Result?+?Chr(StrToInt('0x'+?Copy(Value,?I,?2)));

end;

end;

{??--??字符62616964757a686964616fe4b893e5b19e31333363363438串加密函數?默認按照?128?位密匙加密?--??}

function?EncryptString(Value:?string;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?string;

var

SS,?DS:?TStringStream;

Size:?Int64;

AESKey128:?TAESKey128;

AESKey192:?TAESKey192;

AESKey256:?TAESKey256;

begin

Result?:=?'';

SS?:=?TStringStream.Create(Value);

DS?:=?TStringStream.Create('');

try

Size?:=?SS.Size;

DS.WriteBuffer(Size,?SizeOf(Size));

{??--??128?位密匙最大長度為?16?個字符?--??}

if?KeyBit?=?kb128?then

begin

FillChar(AESKey128,?SizeOf(AESKey128),?0?);

Move(PChar(Key)^,?AESKey128,?Min(SizeOf(AESKey128),?Length(Key)));

EncryptAESStreamECB(SS,?0,?AESKey128,?DS);

end;

{??--??192?位密匙最大長度為?24?個字符?--??}

if?KeyBit?=?kb192?then

begin

FillChar(AESKey192,?SizeOf(AESKey192),?0?);

Move(PChar(Key)^,?AESKey192,?Min(SizeOf(AESKey192),?Length(Key)));

EncryptAESStreamECB(SS,?0,?AESKey192,?DS);

end;

{??--??256?位密匙最大長度為?32?個字符?--??}

if?KeyBit?=?kb256?then

begin

FillChar(AESKey256,?SizeOf(AESKey256),?0?);

Move(PChar(Key)^,?AESKey256,?Min(SizeOf(AESKey256),?Length(Key)));

EncryptAESStreamECB(SS,?0,?AESKey256,?DS);

end;

Result?:=?StrToHex(DS.DataString);

finally

SS.Free;

DS.Free;

end;

end;

{??--??字符串解密函數?默認按照?128?位密匙解密?--??}

function?DecryptString(Value:?string;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?string;

var

SS,?DS:?TStringStream;

Size:?Int64;

AESKey128:?TAESKey128;

AESKey192:?TAESKey192;

AESKey256:?TAESKey256;

begin

Result?:=?'';

SS?:=?TStringStream.Create(HexToStr(Value));

DS?:=?TStringStream.Create('');

try

Size?:=?SS.Size;

SS.ReadBuffer(Size,?SizeOf(Size));

{??--??128?位密匙最大長度為?16?個字符?--??}

if?KeyBit?=?kb128?then

begin

FillChar(AESKey128,?SizeOf(AESKey128),?0?);

Move(PChar(Key)^,?AESKey128,?Min(SizeOf(AESKey128),?Length(Key)));

DecryptAESStreamECB(SS,?SS.Size?-?SS.Position,?AESKey128,?DS);

end;

{??--??192?位密匙最大長度為?24?個字符?--??}

if?KeyBit?=?kb192?then

begin

FillChar(AESKey192,?SizeOf(AESKey192),?0?);

Move(PChar(Key)^,?AESKey192,?Min(SizeOf(AESKey192),?Length(Key)));

DecryptAESStreamECB(SS,?SS.Size?-?SS.Position,?AESKey192,?DS);

end;

{??--??256?位密匙最大長度為?32?個字符?--??}

if?KeyBit?=?kb256?then

begin

FillChar(AESKey256,?SizeOf(AESKey256),?0?);

Move(PChar(Key)^,?AESKey256,?Min(SizeOf(AESKey256),?Length(Key)));

DecryptAESStreamECB(SS,?SS.Size?-?SS.Position,?AESKey256,?DS);

end;

Result?:=?DS.DataString;

finally

SS.Free;

DS.Free;

end;

end;

{??--??流加密函數?默認按照?128?位密匙解密?--??}

function?EncryptStream(Stream:?TStream;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?TStream;

var

Count:?Int64;

OutStrm:?TStream;

AESKey128:?TAESKey128;

AESKey192:?TAESKey192;

AESKey256:?TAESKey256;

begin

OutStrm?:=?TStream.Create;

Stream.Position?:=?0;

Count?:=?Stream.Size;

OutStrm.Write(Count,?SizeOf(Count));

try

{??--??128?位密匙最大長度為?16?個字符?--??}

if?KeyBit?=?kb128?then

begin

FillChar(AESKey128,?SizeOf(AESKey128),?0?);

Move(PChar(Key)^,?AESKey128,?Min(SizeOf(AESKey128),?Length(Key)));

EncryptAESStreamECB(Stream,?0,?AESKey128,?OutStrm);

end;

{??--??192?位密匙最大長度為?24?個字符?--??}

if?KeyBit?=?kb192?then

begin

FillChar(AESKey192,?SizeOf(AESKey192),?0?);

Move(PChar(Key)^,?AESKey192,?Min(SizeOf(AESKey192),?Length(Key)));

EncryptAESStreamECB(Stream,?0,?AESKey192,?OutStrm);

end;

{??--??256?位密匙最大長度為?32?個字符?--??}

if?KeyBit?=?kb256?then

begin

FillChar(AESKey256,?SizeOf(AESKey256),?0?);

Move(PChar(Key)^,?AESKey256,?Min(SizeOf(AESKey256),?Length(Key)));

EncryptAESStreamECB(Stream,?0,?AESKey256,?OutStrm);

end;

Result?:=?OutStrm;

finally

OutStrm.Free;

end;

end;

{??--??流解密函數?默認按照?128?位密匙解密?--??}

function?DecryptStream(Stream:?TStream;?Key:?string;

KeyBit:?TKeyBit?=?kb128):?TStream;

var

Count,?OutPos:?Int64;

OutStrm:?TStream;

AESKey128:?TAESKey128;

AESKey192:?TAESKey192;

AESKey256:?TAESKey256;

begin

OutStrm?:=?TStream.Create;

Stream.Position?:=?0;

OutPos?:=OutStrm.Position;

Stream.ReadBuffer(Count,?SizeOf(Count));

try

{??--??128?位密匙最大長度為?16?個字符?--??}

if?KeyBit?=?kb128?then

begin

FillChar(AESKey128,?SizeOf(AESKey128),?0?);

Move(PChar(Key)^,?AESKey128,?Min(SizeOf(AESKey128),?Length(Key)));

DecryptAESStreamECB(Stream,?Stream.Size?-?Stream.Position,

AESKey128,?OutStrm);

end;

{??--??192?位密匙最大長度為?24?個字符?--??}

if?KeyBit?=?kb192?then

begin

FillChar(AESKey192,?SizeOf(AESKey192),?0?);

Move(PChar(Key)^,?AESKey192,?Min(SizeOf(AESKey192),?Length(Key)));

DecryptAESStreamECB(Stream,?Stream.Size?-?Stream.Position,

AESKey192,?OutStrm);

end;

{??--??256?位密匙最大長度為?32?個字符?--??}

if?KeyBit?=?kb256?then

begin

FillChar(AESKey256,?SizeOf(AESKey256),?0?);

Move(PChar(Key)^,?AESKey256,?Min(SizeOf(AESKey256),?Length(Key)));

DecryptAESStreamECB(Stream,?Stream.Size?-?Stream.Position,

AESKey256,?OutStrm);

end;

OutStrm.Size?:=?OutPos?+?Count;

OutStrm.Position?:=?OutPos;

Result?:=?OutStrm;

finally

OutStrm.Free;

end;

end;

總結

以上是生活随笔為你收集整理的java delphi aes加密算法_谁有C#与delphi通用的AES加密算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。