最近做了一个.NET访问Java接口的小Demo,其中用到了SHA1加密,大体思路就是.NET 传一些参数然后SHA1加密,Java端接收到之后在SHA1加密对比。

  Java代码:

  

public final class SHA1 {
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /**
* Takes the raw bytes from the digest and formats them correct.
*
* @param bytes the raw bytes from the digest.
* @return the formatted bytes.
*/
private static String getFormattedText(byte[] bytes) {
int len = bytes.length;
StringBuilder buf = new StringBuilder(len * 2);
// 把密文转换成十六进制的字符串形式
for (int j = 0; j < len; j++) {
buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
}
return buf.toString();
} /**
* 编码
* */
public static String encode(String str) {
if (str == null) {
return null;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
messageDigest.update(str.getBytes());
return getFormattedText(messageDigest.digest());
} catch (Exception e) {
throw new RuntimeException(e);
}
} }

  .NET代码

  public  string SHA1(string content, Encoding encode)
{
try
{
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] bytes_in = encode.GetBytes(content);
byte[] bytes_out = sha1.ComputeHash(bytes_in);
sha1.Dispose();
StringBuilder ret = new StringBuilder();
foreach (byte b in bytes_out)
{
//{0:X2} 大写
ret.AppendFormat("{0:x2}", b);
}
var hex = ret.ToString();
return hex;
}
catch (Exception ex)
{
throw new Exception("SHA1加密出错:" + ex.Message);
}
}

  经测试,两种加密方法得到的结果是一致的~~

最新文章

  1. ORA-28000: the account is locked 账户被锁
  2. c++语言友元函数和成员函数对运算符重载
  3. AppBox升级进行时 - 如何向OrderBy传递字符串参数(Entity Framework)
  4. [转]Spring JdbcTemplate 查询分页
  5. Oracle求连续的年份
  6. canvas调节视频颜色
  7. 简单CSS hack:区分IE6、IE7、IE8、Firefox、Opera
  8. HBase Shell输入命令无法删除问题解决技巧
  9. 2013年全国各大著名的IT公司薪资待遇大揭密
  10. ios开发 AFNetworking的基本使用方法
  11. PXE+Kickstart无人值守安装操作系统
  12. 柯塔娜(Cortana):从科幻虚构到真实人生
  13. 启动django应用报错 “Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。”
  14. MySQL-mysql 8.0.11安装教程
  15. sitecore8.2 如何关闭性能计数器
  16. mysql出现“Incorrect key file for table”解决办法
  17. ☆ [POJ2411] Mondriaan&#39;s Dream 「状压DP」
  18. C# JSON 转换
  19. EF5+MVC4系列(1) Podwerdesigner15.1设计数据库;PD中间表和EF实体模型设计器生成中间表的区别;EF5.0 表关系插入数据(一对多,多对多)
  20. 【BZOJ】1651: [Usaco2006 Feb]Stall Reservations 专用牛棚(线段树/前缀和 + 差分)

热门文章

  1. Java - 谨慎覆盖equals
  2. Ruby 踩坑 &ldquo;Failed to build gem native extension&rdquo;
  3. Python 爬虫的集中简单方式
  4. sql: TRIGGER
  5. org.apache.ibatis.binding.BindingException
  6. webservice使用windows身份验证,ajax请求报错401未授权的解决办法
  7. bat中实现代码拷贝到指定目录后启动命令行并更改默认路径
  8. C#开发小技巧
  9. 【转】Silverlight无法添加服务引用
  10. 在 Mac OS X 上安装 Docker(转)