前言:
SHA 家族有SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,算法详细可以看:
在Android 中同MD5 的使用,都是使用的MesssageDigest 类,只是算法的名称不同,本文用SHA-1为例,其他的几种都可以用同样的方法。
更多的加密可以看:
实例:
如 MD5加密 所列,将Message Digest 的算法用一个公共类 MessageDigestHelper,详细看 MD5加密 。
本文这边重新多加了一个类SHA1Encryption:
public class SHA1Encryption extends MessageDigestEncryption {
private static final String ALGORITHM = "SHA-1";
public SHA1Encryption() {
this(ALGORITHM);
}
public SHA1Encryption(String alg) {
super(alg);
}
}
Activity 的button 部分如下:
private void testEncryptionSHA1() {
Button sha1 = (Button) findViewById(R.id.encrypt_sha1);
sha1.setOnClickListener(this);
}
private void sha1Encryption() {
mOperationTitle.setText(getString(R.string.encrypt_sha1));
{
String str1 = "";
String result = "";
SHA1Encryption encryption = new SHA1Encryption();
result = encryption.getStringMD(str1);
Log.d(TAG, "==== sha1: " + result);
String strSource = "hliuhiufhliuhsd;jfijso;goshgosjogijsgo;j";
mBeforeOperation.setText(getString(R.string.before_operation, strSource));
result = encryption.getStringMD(strSource);
mAfterOperation.setText(getString(R.string.after_operation, result));
}
// if (mFileEncryption != null) {
// Log.d(TAG, "==== test file, encryption with sha1 ...");
// String filePath = "/storage/emulated/0/hehe.png";
// mFileEncryption.setAlgorithm(FileEncryption.ALG_MODE_SHA_1);
// mFileEncryption.start(FileEncryption.MODE_ENCRYPT, "", filePath);
// Log.d(TAG, "==== test file, encryption end");
// }
}
做了两手准备验证,一个是通过log 打印出空字符串对应的md5值,另一个是非空的字符串sha-1值显示到屏幕上。
具体UI 上的逻辑可以根据实际需要实现,不过多的做解释。
结果:
12-13 00:19:35.654 2305 2305 D TestEncryptionActivity: ==== sha1: da39a3ee5e6b4b0d3255bfef95601890afd80709
这两个结论可以通过PC 上一些工具验证,结果是完全一样的。