以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- MD5加密 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178477) |
-- 作者:otterlike -- 发布时间:2022/7/6 8:55:00 -- MD5加密 老师好,我在写一个接口,对方给了我一个MD5加密规则,代码如下: 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) [此贴子已经被作者于2022/7/6 9:04:08编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/7/6 9:20:00 -- java没有办法转换为vb使用。请对方提供.net比如C#的代码 |
-- 作者:otterlike -- 发布时间:2022/7/22 15:20:00 -- 老师好,对方提供的.net代码如下,我看不懂,请问如何处理? public static string Md5(string value) { var result = string.Empty; if (string.IsNullOrEmpty(value)) return result; using (var md5 = MD5.Create()) { result = GetMd5Hash(md5, value); } return result; } static string GetMd5Hash(MD5 md5Hash, string input) { byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input)); var sBuilder = new StringBuilder(); foreach (byte t in data) { sBuilder.Append(t.ToString("x2")); } return sBuilder.ToString(); } |
-- 作者:有点蓝 -- 发布时间:2022/7/22 15:27:00 -- Dim s As String = "要加密的内容" Using md5 As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create Dim data() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(s)) Dim sBuilder As New StringBuilder() For Each t As Byte In data sBuilder.Append(t.ToString("x2")) Next dim 结果 as string =sBuilder.ToString() Output.Show(结果 ) End Using
|
-- 作者:otterlike -- 发布时间:2022/7/22 15:32:00 -- 非常感谢大神的帮助,让我顶礼膜拜! |