2013-03-05 85 views
0

在Java Android应用程序中,我获得了以下代码以获取字符串的SHA1。我如何在C#中具有等价物?Java SHA1等效于C#

/** 
    * Utility method to convert an array of bytes to hex. 
    * 
    * @param data 
    * @return 
    */ 
    private static String convertToHex(byte[] data) 
    { 
    StringBuilder buf = new StringBuilder(); 
    for (byte b : data) 
    { 
     int halfbyte = (b >>> 4) & 0x0F; 
     int two_halfs = 0; 
     do 
     { 
     buf.append((0 <= halfbyte) && (halfbyte <= 9) ? (char) ('0' + halfbyte) : (char) ('a' + (halfbyte - 10))); 
     halfbyte = b & 0x0F; 
     } 
     while (two_halfs++ < 1); 
    } 
    return buf.toString(); 
    } 

    /** 
    * Hash a String using SHA1. 
    * @param text 
    * @return 
    * @throws NoSuchAlgorithmException 
    * @throws UnsupportedEncodingException 
    */ 
    public static String SHA1(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException 
    { 
    MessageDigest md = MessageDigest.getInstance("SHA-1"); 
    md.update(text.getBytes("iso-8859-1"), 0, text.length()); 
    byte[] sha1hash = md.digest(); 
    return convertToHex(sha1hash); 
    } 
+1

这不是一个真正的问题。 Stackoverflow不是**代码转换器**!请阅读[常见问题]和[问] – 2013-03-05 08:20:50

+0

在C#中的加密命名空间中存在完全相同的SHA1类...我错过了什么? – SpaceBison 2013-03-05 08:21:38

回答

2

.NET中有一个SHA1类,您可以使用它。