Android开发加密之对称与非对称加密算法使用案例
消息摘要
md5:登录注册, sha1
对称加密
1.des:Data Encryption Standard,数据加密标准
2.aes:Advanced Encryption Standard ,更高级的方式
对称加密特点:加密速度快,只有一把钥匙,钥匙泄露文件就暴露
非对称加密
加密算法:RSA
特点:
o 秘钥对:私钥和公钥,秘钥对不是指定的,系统生成的
o 私钥自己保留,公钥可以给别人
o 公钥加密、使用解密
o 私钥加密、公钥解密
o 公钥互换:两个组织或者两个人互换公钥
o 数字签名:验证所属关系 (验证私钥在哪里,举例:比如使用支付宝支付,
支付宝它会有我们的公钥)
public class MainActivity extends AppCompatActivity {
private TextView tvResult;
private String data;
private String key;
private boolean isDes;
private boolean isAes;
private boolean isRas;
private String desEncrypt;
private String aesEncrypt;
private String privateKey;
private String publicKey;
private byte[] encryptByPrivateKey;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
initView();
data "我的QQ 密码:123456";
key ;
initKeyPair();
}
private void initKeyPair() {
try {
//初始化秘钥对:公钥和私钥
Map keyPair RSACrypt.genKeyPair();
privateKey RSACrypt.getPrivateKey(keyPair);
publicKey RSACrypt.getPublicKey(keyPair);
Log.e("result","privateKey "+privateKey);
Log.e("result","publicKey "+publicKey);
} catch (Exception e) {
e.printStackTrace();
}
}
public void des(View v) {
try {
if (!isDes) {//加密
desEncrypt Des.encrypt(data, key);
tvResult.setText("DES 加密:" + desEncrypt);
} else {//解密
String desDecrypt Des.decrypt(desEncrypt, key);
tvResult.setText("DES 解密:" + desDecrypt);
}
isDes !isDes;
} catch (Exception e) {
e.printStackTrace();
}
}
public void aes(View v) {
if