转载:https://blog.youkuaiyun.com/wylong1991/article/details/78411018 Android开发中我们经常会用到各种加密,一般针对一些密码加密,下面给说一下RSA加密与SHA256算法的使用方法:
public class RsaHelper {
/**
*
* rsa加密
* @param s
* @param publicKey
* @return
* @throws InvalidCipherTextException
* @throws IOException
*/
public static String encrypt(String s, String publicKey) throws InvalidCipherTextException, IOException {
AsymmetricBlockCipher engine = new PKCS1Encoding(new RSAEngine());
AsymmetricKeyParameter parameters = GetPublicKeyParameter(publicKey);
engine.init(true, parameters);
byte[] byteData = s.getBytes();
byte[] ResultData = engine.processBlock(byteData, 0, byteData.length);
return Base64.encodeToString((ResultData), Base64.NO_WRAP);
}
/**
*
* rsa解密
* @param s
* @param privateKey
* @return
* @throws InvalidCipherTextException
* @throws IOException
*/
public static String decrypt(String s, String privateKey) throws InvalidCipherTextException, IOException {
AsymmetricBlockCipher engine = new PKCS1Encoding(new RSAEngine());
AsymmetricKeyParameter parameters = GetPrivateKeyParameter(privateKey);
engine.init(false, parameters);
byte[] byteData = Base64.decode(s,Base64.NO_WRAP);
byte[] ResultData = engine.processBlock(byteData, 0, byteData.length);
return new String(ResultData);
}
private static AsymmetricKeyParameter GetPrivateKeyParameter(String key) throws IOException {
String keypriv = key.replace("\r", "").replace("\n", "").replace(" ", "");
byte[] privateInfoByte = Base64.decode(keypriv,Base64.NO_WRAP);
AsymmetricKeyParameter priKey = PrivateKeyFactory.createKey(privateInfoByte);
return priKey;
}
private static AsymmetricKeyParameter GetPublicKeyParameter(String key) throws IOException {
String keypub = key.replace("\r", "").replace("\n", "").replace(" ", "");
byte[] publicInfoByte = Base64.decode(keypub,Base64.NO_WRAP);
AsymmetricKeyParameter pubKey = PublicKeyFactory.createKey(publicInfoByte);
return pubKey;
}
/**
* SHA256加密
* @param content
* @param secret
* @return
*/
public static String encrytSHA256(String content, String secret) {
try {
Security.addProvider(new BouncyCastleProvider());
SecretKey secretKey = new SecretKeySpec(secret.getBytes(),
"HmacSHA256");
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
byte[] digest = mac.doFinal(content.getBytes());
String sig = Base64.encodeToString((digest), Base64.NO_WRAP);
return sig;
} catch (Exception e) {
throw new RuntimeCryptoException("加密异常");
}
}
}
参考:
本文详细介绍了在Android开发中如何使用RSA加密与SHA256算法进行数据加密,提供了具体的Java代码实现,包括加密和解密过程。
8508

被折叠的 条评论
为什么被折叠?



