对称加解密函数
来源:互联网 发布:淘宝买宠物狗可靠吗 编辑:程序博客网 时间:2024/04/28 17:55
--delphi
procedure Encrypt(Value: PAnsiChar; Size: Integer; const PSW: AnsiString); overload;
var
i,l: Integer; w: PAnsiChar;
procedure E(ic: PAnsiChar; pc: AnsiChar); begin ic^ := AnsiChar(Byte((ic^)) xor Byte(pc)); end;
begin
w := PAnsiChar(PSW); l := Length(PSW);
for i := 0 to Size - 1 do E((Value + i),(w + (i mod l))^);
end;
function Encrypt(Value: AnsiString; const PSW: AnsiString; Flag: Boolean): AnsiString; overload
var
Data,Tmp: AnsiString;
i: Integer;
p: PAnsiChar;
begin
Result := '';
if Flag then begin // 加密后编码
if Length(Value) = 0 then Exit;
SetLength(Data,Length(Value)); StrCopy(PAnsiChar(Data),PAnsiChar(Value));
Encrypt(PAnsiChar(Data),Length(Data),PSW); p := PAnsiChar(Data);
for i := 0 to Length(Data) - 1 do
Result := Result + IntToHex(Byte(AnsiChar((p+i)^)),2);
end else begin // 编码后解密
p := PAnsiChar(Value);
for i := 0 to Length(Value) - 1 do
if not ((p + i)^ in ['0'..'9','A'..'F']) then Exit;
for i := 1 to Length(Value) div 2 do
begin
Tmp := '0x' + Copy(Value,i*2-1,2);
StrToInt(Tmp);
Result := Result + AnsiChar(StrToInt(Tmp));
end;
Encrypt(PAnsiChar(Result),Length(Result),PSW);
end;
end;
--c#
public string Encrypt(string user, string pwd, bool flag)
char[] uData, pData;
string resultstr = "";
if (flag)
{
uData = user.ToCharArray();
pData = pwd.ToCharArray();
for (int i = 0; i < pwd.Length; i++)
{
string kk = (Convert.ToInt16(uData[i % user.Length] ^ pData[i])).ToString("X");
resultstr += (kk.Length % 2 == 0) ? kk : "0" + kk;
}
}
else
{
uData = user.ToCharArray();
for (int i = 0; i < pwd.Length / 2; i++)
resultstr += (char)(int.Parse(pwd.Substring(i * 2, 2), System.Globalization.NumberStyles.AllowHexSpecifier) ^ uData[i % user.Length]);
}
return resultstr;
}
- 对称加解密函数
- java对称加解密
- C# 对称加解密
- 对称加解密算法
- 对称加解密算法
- 非对称加解密
- 对称加解密和非对称加解密
- 对称EDS加解密方法
- 对称EDS加解密方法
- 对称EDS加解密方法
- 非对称加解密原理
- 非对称加解密(RSA)
- java AES对称加解密
- 对称加解密的例子
- RSA 非对称加解密
- RSA非对称加解密
- 简单对称加解密(一)
- 对称加解密(未认证过)
- MFC中CTreeCtrl奇怪的SetCheck
- C++开发环境
- linux下的网络编程详解
- 毕业--残念
- java 的看法
- 对称加解密函数
- MFC中动态控件的创建与响应
- PHP中的报表、图表工具汇总
- Struts2实现多文件上传
- 转任意素数有有无穷个的证明
- RTEMS文件系统(4):系统调用开发信息(上)
- 一个标准存储过程和事务回滚的语法
- 学习笔记:基于jquery的tab切换函数
- 金山卫士开源---kclear 卫士垃圾清理