加密算法
请问这个是什么加密算法,谁可以帮我翻译成c#,我翻译老不对,里面有些函数c#里没有,如asc
Function crypt(Action As String, Key As String, Src As String) As String
Dim Count As Integer, KeyPos As Integer, KeyLen As Integer, SrcAsc As Integer, dest As String, offset As Integer, TmpSrcAsc, SrcPos
KeyLen = Len(Key)
If Action = "E " Then
Randomize
offset = (Rnd * 10000 Mod 255) + 1
dest = Hex$(offset)
If Len(dest) = 1 Then
dest = "0 " + dest
End If
For SrcPos = 1 To Len(Src)
SrcAsc = (Asc(Mid$(Src, SrcPos, 1)) + offset) Mod 255
If KeyPos < KeyLen Then KeyPos = KeyPos + 1 Else KeyPos = 1
SrcAsc = SrcAsc Xor Asc(Mid$(Key, KeyPos, 1))
dest = dest + Format$(Hex$(SrcAsc), "@@ ")
offset = SrcAsc
Next
ElseIf Action = "D " Then
offset = Val( "&H " + Left$(Src, 2))
For SrcPos = 3 To Len(Src) Step 2
SrcAsc = Val( "&H " + Trim(Mid$(Src, SrcPos, 2)))
If KeyPos < KeyLen Then KeyPos = KeyPos + 1 Else KeyPos = 1
TmpSrcAsc = SrcAsc Xor Asc(Mid$(Key, KeyPos, 1))
If TmpSrcAsc <= offset Then
TmpSrcAsc = 255 + TmpSrcAsc - offset
Else
TmpSrcAsc = TmpSrcAsc - offset
End If
dest = dest + Chr(TmpSrcAsc)
offset = SrcAsc
Next
End If
crypt = dest
End Function
------解决方案--------------------//考虑字符中会出现汉字的情况,参考如下代码:
private string fCrypt(string Action, string Key, string Src)
{
int vKeyLen = Key.Length;
int vKeyPos = 0;
byte[] vKeyBuffer = Encoding.UTF8.GetBytes(Key);
if (Action == "E ")
{
byte[] vSrcBuffer = Encoding.UTF8.GetBytes(Src);
string vReturn = " ";
Random vRandom = new Random();
byte vOffset = (byte)vRandom.Next(256);
vReturn = vOffset.ToString( "X2 ");
foreach (byte vByte in vSrcBuffer)
{
byte vTemp = (byte)((vByte + vOffset) % 255);
vTemp ^= vKeyBuffer[vKeyPos];
vKeyPos = (vKeyPos + 1) % vKeyLen;
vReturn += vTemp.ToString( "X2 ");
vOffset = vTemp;
}
return vReturn;
}
else if (Action == "D ")
{
byte[] vDest = new byte[(Src.Length - 2) / 2];
int vOffset = int.Parse(Src.Substring(0, 2),
System.Globalization.NumberStyles.HexNumber);