package algo; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * SHA(Secure Hash Algorithm,安全散列算法), * 数字签名等密码学应用中重要的工具,被普遍地应用于电子商务等信息安全领域。 * 虽然,SHA与MD5经过碰撞法都被破解了, 可是SHA仍然是公认的安全加密算法,较之MD5更为安全。 * @author Administrator * */ public class SHA { public static void main(String[] args) { String str = "南海是中国的"; System.out.println("---原始---:"+str); String encryptShaRes1 = encryptSHA1(str); System.out.println("SHA-1加密后:"+encryptShaRes1); } private static String SHA = "SHA-1"; //private static String SHA2 = "SHA"; /** * SHA摘要加密,通常用于数字签名 * @param decript * @return */ public static String encryptSHA1(String decript) { try { // 得到SHA-1摘要算法的 MessageDigest 对象 MessageDigest digest = MessageDigest.getInstance(SHA); //MessageDigest digest = java.security.MessageDigest.getInstance(SHA2); // 使用指定的字节更新摘要 digest.update(decript.getBytes()); // 得到密文 byte[] messageDigest = digest.digest(); // 把密文转换成十六进制的字符串形式 StringBuffer hexString = new StringBuffer(); // 字节数组转换为 十六进制 数 for (int i = 0; i < messageDigest.length; i++) { String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); if (shaHex.length() < 2) { hexString.append(0); } hexString.append(shaHex); } return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } }