VB.net
Function EncryptStrByHash(ByVal Str As String) As String
If Str.Length = 0 Then
Return ""
End If
Dim HaKey() As Byte
Dim HaData(20) As Byte
HaKey = System.Text.Encoding.ASCII.GetBytes((Str + "Test").ToCharArray())
Dim Hmac As HMACSHA1
Hmac = New HMACSHA1(HaKey)
Dim cs As CryptoStream
cs = New CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write)
Try
cs.Write(HaData, 0, HaData.Length)
Catch ex As Exception
Finally
cs.Close()
End Try
Dim HaResult As String
HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16)
Dim RiKey() As Byte
RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray())
Dim RiDataBuf() As Byte
RiDataBuf = System.Text.Encoding.ASCII.GetBytes(Str.ToCharArray())
Dim EncodedBytes(0) As Byte Dim ms As MemoryStream
Dim rv As RijndaelManaged
ms = New MemoryStream
rv = New RijndaelManaged
cs = New CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write)
Try
cs.Write(RiDataBuf, 0, RiDataBuf.Length)
cs.FlushFinalBlock()
EncodedBytes = ms.ToArray()
Catch ex As Exception
Finally
ms.Close()
cs.Close()
End Try
Return HaResult + System.Convert.ToBase64String(EncodedBytes)
End FunctionC# public string EncryptStrByHash(string src)
{
if (src.Length == 0)
{
return "";
}
byte[] HaKey = System.Text.Encoding.ASCII.GetBytes((src + "Test").ToCharArray());
byte[] HaData = new byte[20];
HMACSHA1 Hmac = new HMACSHA1(HaKey);
CryptoStream cs = new CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write);
try
{
cs.Write(HaData, 0, HaData.Length);
}
finally
{
cs.Close();
}
string HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16);
byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray());
byte[] RiDataBuf = System.Text.Encoding.ASCII.GetBytes(src.ToCharArray());
byte[] EncodedBytes = { };
MemoryStream ms = new MemoryStream();
RijndaelManaged rv = new RijndaelManaged();
cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write);
try
{
cs.Write(RiDataBuf, 0, RiDataBuf.Length);
cs.FlushFinalBlock();
EncodedBytes = ms.ToArray();
}
finally
{
ms.Close();
cs.Close();
}
return HaResult + System.Convert.ToBase64String(EncodedBytes);
}
转化过来的 不过加密同一段字符 两个结果不一样为什么是不是转换有什么问题 望高手赐教
Function EncryptStrByHash(ByVal Str As String) As String
If Str.Length = 0 Then
Return ""
End If
Dim HaKey() As Byte
Dim HaData(20) As Byte
HaKey = System.Text.Encoding.ASCII.GetBytes((Str + "Test").ToCharArray())
Dim Hmac As HMACSHA1
Hmac = New HMACSHA1(HaKey)
Dim cs As CryptoStream
cs = New CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write)
Try
cs.Write(HaData, 0, HaData.Length)
Catch ex As Exception
Finally
cs.Close()
End Try
Dim HaResult As String
HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16)
Dim RiKey() As Byte
RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray())
Dim RiDataBuf() As Byte
RiDataBuf = System.Text.Encoding.ASCII.GetBytes(Str.ToCharArray())
Dim EncodedBytes(0) As Byte Dim ms As MemoryStream
Dim rv As RijndaelManaged
ms = New MemoryStream
rv = New RijndaelManaged
cs = New CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write)
Try
cs.Write(RiDataBuf, 0, RiDataBuf.Length)
cs.FlushFinalBlock()
EncodedBytes = ms.ToArray()
Catch ex As Exception
Finally
ms.Close()
cs.Close()
End Try
Return HaResult + System.Convert.ToBase64String(EncodedBytes)
End FunctionC# public string EncryptStrByHash(string src)
{
if (src.Length == 0)
{
return "";
}
byte[] HaKey = System.Text.Encoding.ASCII.GetBytes((src + "Test").ToCharArray());
byte[] HaData = new byte[20];
HMACSHA1 Hmac = new HMACSHA1(HaKey);
CryptoStream cs = new CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write);
try
{
cs.Write(HaData, 0, HaData.Length);
}
finally
{
cs.Close();
}
string HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16);
byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray());
byte[] RiDataBuf = System.Text.Encoding.ASCII.GetBytes(src.ToCharArray());
byte[] EncodedBytes = { };
MemoryStream ms = new MemoryStream();
RijndaelManaged rv = new RijndaelManaged();
cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write);
try
{
cs.Write(RiDataBuf, 0, RiDataBuf.Length);
cs.FlushFinalBlock();
EncodedBytes = ms.ToArray();
}
finally
{
ms.Close();
cs.Close();
}
return HaResult + System.Convert.ToBase64String(EncodedBytes);
}
转化过来的 不过加密同一段字符 两个结果不一样为什么是不是转换有什么问题 望高手赐教
{
if (Str.Length == 0) {
return "";
}
byte[] HaKey = null;
byte[] HaData = new byte[21];
HaKey = System.Text.Encoding.ASCII.GetBytes((Str + "Test").ToCharArray());
HMACSHA1 Hmac = default(HMACSHA1);
Hmac = new HMACSHA1(HaKey);
CryptoStream cs = default(CryptoStream);
cs = new CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write);
try {
cs.Write(HaData, 0, HaData.Length);
}
catch (Exception ex) {
}
finally {
cs.Close();
}
string HaResult = null;
HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16);
byte[] RiKey = null;
RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray());
byte[] RiDataBuf = null;
RiDataBuf = System.Text.Encoding.ASCII.GetBytes(Str.ToCharArray());
byte[] EncodedBytes = new byte[1];
MemoryStream ms = default(MemoryStream);
RijndaelManaged rv = default(RijndaelManaged);
ms = new MemoryStream();
rv = new RijndaelManaged();
cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write);
try {
cs.Write(RiDataBuf, 0, RiDataBuf.Length);
cs.FlushFinalBlock();
EncodedBytes = ms.ToArray();
}
catch (Exception ex) {
}
finally {
ms.Close();
cs.Close();
}
return HaResult + System.Convert.ToBase64String(EncodedBytes);
}
不好意思 忘记说了
c#代码是源码 VB是按照c#一步一步 翻译过来的
还有
c#public static byte[] DESKey = new byte[] { 0x82, 0xBC, 0xA1};
怎么转化为 VB
If src.Length = 0 Then
Return ""
End If
Dim HaKey As Byte() = System.Text.Encoding.ASCII.GetBytes((src & "Test").ToCharArray())
Dim HaData As Byte() = New Byte(19) {}
Dim Hmac As New HMACSHA1(HaKey)
Dim cs As New CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write)
Try
cs.Write(HaData, 0, HaData.Length)
Finally
cs.Close()
End Try
Dim HaResult As String = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16)
Dim RiKey As Byte() = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray())
Dim RiDataBuf As Byte() = System.Text.Encoding.ASCII.GetBytes(src.ToCharArray())
Dim EncodedBytes As Byte() = {}
Dim ms As New MemoryStream()
Dim rv As New RijndaelManaged()
cs = New CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write)
Try
cs.Write(RiDataBuf, 0, RiDataBuf.Length)
cs.FlushFinalBlock()
EncodedBytes = ms.ToArray()
Finally
ms.Close()
cs.Close()
End Try
Return HaResult + System.Convert.ToBase64String(EncodedBytes)
End Function 工具转的,我也没有仔细看.
camelials
麻烦你在帮我这段翻译一下 (to:vb.net)我找的翻译咋都不对啊
public string DecrypStrByHash(string src)
{
if (src.Length < 40) return "";
byte[] SrcBytes = System.Convert.FromBase64String(src.Substring(16));
byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(src.Substring(0, 16).ToCharArray());
byte[] InitialText = new byte[SrcBytes.Length];
RijndaelManaged rv = new RijndaelManaged();
MemoryStream ms = new MemoryStream(SrcBytes);
CryptoStream cs = new CryptoStream(ms, rv.CreateDecryptor(RiKey, RiKey), CryptoStreamMode.Read);
try
{
cs.Read(InitialText, 0, InitialText.Length);
}
finally
{
ms.Close();
cs.Close();
}
System.Text.StringBuilder Result = new System.Text.StringBuilder();
for (int i = 0; i < InitialText.Length; ++i) if (InitialText[i] > 0) Result.Append((char)InitialText[i]);
return Result.ToString();
}