首页 > 其他分享 >加密解密

加密解密

时间:2023-03-14 16:14:46浏览次数:34  
标签:function 加密 string 解密 KeyPos Result Key integer

// 加密方法一(通过密钥加密解密)
function EncryptString(Source, Key: string): string;
function UnEncryptString(Source, Key: string): string;
//加密方法二(通过移位加密解密)
function Encode(Str: string): string;
function Decode(Str: string): string;
//加密方法三(异或加密解密)
function Enc(str: string): string;
function Dec(str: string): string;

---------------

function TFrmRegister.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 TFrmRegister.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('$' + copy(Source, 1, 2));
SrcPos := 3;
repeat
SrcAsc := strtoint('$' + copy(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;

----------------

function TFrmRegister.Decode(Str: string): string;
var
TmpChr: AnsiChar;
i, Len: Integer;
begin
Result := Str;
len := Length(Result);
TmpChr := result[len];
for i := Len downto 2 do
begin
Result[i] := result[i - 1];
Result[1] := TmpChr;
end;
end;

function TFrmRegister.Encode(Str: string): string;
var
TmpChr: AnsiChar;
i, Len: Integer;
begin
Result := Str;
len := Length(Result);
TmpChr := result[1];
for i := 1 to len - 1 do
begin
Result[i] := result[i + 1];
Result[len] := TmpChr;
end;
end;

---------

XorKey: array[0..7] of Byte = ($B2, $09, $AA, $55, $93, $6D, $84, $47);

function TFrmRegister.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 TFrmRegister.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;

 

标签:function,加密,string,解密,KeyPos,Result,Key,integer
From: https://www.cnblogs.com/sixty-five/p/17215252.html

相关文章

  • C# 字符串加密解密类
    ///<summary>///字符串加密解密类///</summary>publicstaticclassStringSecurity{///<summary>///DES加密///</summary>///<paramnam......
  • Java AES 加密解密&& shell 加密解密
    packageemails;importsun.misc.BASE64Decoder;importjavax.crypto.Cipher;importjavax.crypto.spec.SecretKeySpec;importjava.util.Base64;/***AES加......
  • 常见的加密算法
    常见的加密算法目前常见的加密算法分类如下:1,单向散列加密算法  常见算法包括:MD5、sha1、sha256等2,对称加密算法  常见的算法有:DES、3DES、AES3,非对称加密算......
  • 华为OD 字符串加密
    字符串加密......
  • md5加密,rsa加密
      一、md5加密 简称签名,签名算法如下,一般用例登录接口,用来安全使用sign=md5(nonce +timestamp +params) ......
  • [JS JavaScript] 使用CryptoJS库对给定的加密字符串进行解密
    本代码可以使用在Web中,或者其他可以出入密码的场景在需要解密的信息不大的情况下,可以将加密后的信息放入到JS中,在输入密码后,对加密后的信息进行解密在vue中,可以很方便的......
  • 使用synapse搭建matrix去中心化加密通信服务
    前言首先必须介绍下Matrix。Matrix是一个开源、可交互、去中心化的实时通信服务框架。使用Matrix可以搭建安全的通信服务器,配合支持Matrix的客户端可以实现个人、团队间......
  • 量子图形加密算法的MATLAB代码实现
    一、概述目前主流的量子图形加密算法有量子像素编码算法(QuantumImagePixelEncoding,QIPE)、量子像素置乱算法(QuantumImagePixelScrambling,QIPS)等。一个简......
  • 计算机网络系统方法:加密构件
    我们一步一步地介绍基于密码学的安全概念。第一步是本节介绍的加密算法--密码器和加密散列--。它们本身并不是一个解决方案,而是可以用来构建解决方案的构件。加密算法的参......
  • RSA加密
    publicstaticfinalStringKEY_ALGORITHM="RSA";privatestaticfinalStringPUBLIC_KEY="RSAPublicKey";privatestaticfinalStringPRIVATE_K......