Android 加密解密的几种方式总结

经常使用加密算法:DES、3DES、RC4、AES,RSA等;

对称加密:des,3des,aes

非对称加密:rsa

不可逆加密:md5

加密模式:ECB、CBC、CFB、OFB等;

填充模式:NoPadding、PKCS1Padding、PKCS5Padding、PKCS7Padding

一、几种方式的加密和解密(Base64,RSA,DES,AES)

实现类

  • MainActivity

 

public class HomeActivity extends AppCompatActivity {

    private static final String TAG = "HomeActivity";
    private static final String type = "android";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        setBase64();
        setRSA();
        setDES();
        setAES();

        // DES 加密 - AES 加密 - AES 解密 - DES 解密
        setDesAndAes();


    }
}

测试

  • setBase64()

 

private void setBase64() {

        String oldWord = "大家要注意身体,不要熬夜写代码";
        try {
            // 编码
            String encode = Base64Util.encodeWord(oldWord);
            System.out.println("编码:" + encode);
            // 解码
            String decode = Base64Util.decodeWord(encode);
            System.out.println("编码:" + decode);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

    }

$map效果

  • setRSA()

 

 private void setRSA() {
        // 获取到密钥对
        KeyPair keyPair = RSAUtil.generateRSAKeyPair(1024);

        // 获取公钥和私钥
        PublicKey aPublic = keyPair.getPublic();
        PrivateKey aPrivate = keyPair.getPrivate();
        ;
        byte[] aPublicEncoded = aPublic.getEncoded();
        byte[] aPrivateEncoded = aPrivate.getEncoded();

        try {

            // 公钥加密
            byte[] bytes = RSAUtil.encryptByPublicKey(type, "123".getBytes(), aPublicEncoded);
            String s1 = Base64Util.encodeWord(bytes.toString());
//            String encode = Base64Utils.encode(bytes);
//            Log.d(TAG, "公钥加密文件: " + encode);
            Log.d(TAG, s1);

            // 私钥解密
            byte[] bytes1 = RSAUtil.decryptByPrivateKey(type, bytes, aPrivateEncoded);
            String s = new String(bytes1);
            Log.d(TAG, "私钥解密文件: " + s);

        } catch (Exception e) {
            e.printStackTrace();
        }


        System.out.println("");

        try {
            // 私钥加密
            byte[] bytes = RSAUtil.encryptByPrivateKey(type, "456".getBytes(), aPrivateEncoded);
            String encode = Base64Utils.encode(bytes);
            Log.d(TAG, "私钥加密文件: " + encode);

            // 公钥解密
            byte[] bytes1 = RSAUtil.decryptByPublicKey(type, bytes, aPublicEncoded);
            String s = new String(bytes1);
            Log.d(TAG, "公钥解密文件: " + s);


        } catch (Exception e) {
            e.printStackTrace();
        }


    }
  • setDES()

 

  private void setDES() {

        /// ---------------------------------------- 静态 ------------------------------------------

        String key = "2012j214";        // 键值必须大于8位
        try {
            // 加密
            String s = DESUtil.desEncrypt("欧拉蕾", key);
            Log.d(TAG, "静态加密: " + s);

            // 解密
            String s1 = DESUtil.desDecrypt(s, key);
            Log.d(TAG, "静态解密: " + s1);

        } catch (Exception e) {
            e.printStackTrace();
        }

        // ----------------------------------------- 动态 ------------------------------------------

        // 动态生成秘钥
        String key2 = DESUtil.generateKey();

        try {

            // 动态加密
            String encode = DESUtil.encode(key2, "风里来,雨里去");
            Log.d(TAG, "动态加密: " + encode);

            // 动态解密
            String decode = DESUtil.decode(key2, encode);
            Log.d(TAG, "动态解密: " + decode);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
  • setAES()

 

private void setAES() {

        // 动态生成秘钥
        String key = AESUtil.generateKey();

        try {

            // 加密
            String encrypt = AESUtil.encrypt(key, "人有悲欢离合
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QY’UniverseSpace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值