import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Md5Util {
//写一个md5加密的方法
public static String md5(String plainText) {
//定义一个字节数组
byte[] secretBytes = null;
try {
// 生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//对字符串进行加密
md.update(plainText.getBytes());
//获得加密后的数据
secretBytes = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有md5这个算法!");
}
//将加密后的数据转换为16进制数字
String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
// 如果生成数字未满32位,需要前面补0
int length = md5code.length();
for (int i = 0; i < 32 - length; i++) {
md5code = "0" + md5code;
}
return md5code;
}
}
我用代码转换器,将JAVA转换为VB之后如下:
Class SurroundingClass
Private Function BigInteger() As import
Private Function MessageDigest() As import
Private Function NoSuchAlgorithmException() As import
Public Class Md5Util
Public Shared Function md5(ByVal plainText As String) As String
Dim secretBytes As Byte() = Nothing
Try
Dim md As MessageDigest = MessageDigest.getInstance("MD5")
md.update(plainText.getBytes())
secretBytes = md.digest()
Catch e As NoSuchAlgorithmException
Throw New RuntimeException("没有md5这个算法!")
End Try
Dim md5code As String = New BigInteger(1, secretBytes).toString(16)
Dim length As Integer = md5code.length()
For i As Integer = 0 To 32 - length - 1
md5code = "0" & md5code
Next
Return md5code
End Function
End Class
End Class
然后,我用转换为VB之后的代码对字符"a"进行加密测试,提示未知编译错误,请老师帮忙指正错误在哪里,谢谢!
Dim str As String = "a"
Dim md5Str As String = Md5Util.MD5(str)
Output.Show(md5Str)