Android/Java中常用的签名算法实现:
(包括BASE64、MD5、SHA1、HMAC_SHA1、AES、RSA等)
package com.helloWorld;
import java.security.KeyFactory;
import java.security.MessageDigest;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Locale;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import android.util.Base64;
/**
* 加解密工具类
* @author helloWorld
*
*/
public class EncryptUtils {
/**
* Hex字符
*/
public static final String HEX_DIGITS = "0123456789ABCDEF";
/**
* UTF-8
*/
public static final String UTF_8 = "UTF-8";
/**
* base64编码
* @param bytes
* @return
*/
public static String base64Encode(byte[] bytes) {
return Base64.encodeToString(bytes, Base64.NO_WRAP);
}
/**
* base64解码
* @param base64Str
* @return
* @throws Exception
*/
public static byte[] base64Decode(String base64Str) throws Exception {
return Base64.decode(base64Str, Base64.NO_WRAP);
}
/**
* 字节数组转成16进制字符串
* @param bytes
* @return
*/
public static String bytesToHexString(byte[] bytes) {
if (bytes == null || bytes.length <= 0) {
return null;
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < bytes.length; ++i) {
int