Android 加解密类Cipher

近日在做一个关于短信及文件加解密的小项目,查看了一些Android加解密方面的知识。关于加解密这部分以前完全没有接触过,所以网上乱翻了一天对于什么DES,AES,RSA,BASE64,MD5之类的还是懵懵懂懂,这里也就不再来说它们的原理了,实在是我自己也没弄懂。写这篇博客时也就大致了解了一下Cipher类,并实现了一个简单的AES编解码工具类,当然是用的都是些最简单的默认模式,更详细的知识还有待进一步的学习。 此博文主要是复习记录一下一天学习所得,加深印象。

Android的Cipher类其实是来自于JAVA的加密环境JCE,查看官方的文档就可以看到: javax.crypto.Cipher。当然据说这个类也不在官方的正式JDK里面,而且有些解密方法在Android中不可用(这部分不敢下结论,加密的东西我也刚刚开始了解)。下面就来具体看一下实现AES加密的过程吧。

Step1:实现一个简单XML文件做测试界面,实现一个EditText,两个Button,一个TextView显示结果:

    <EditText
        android:id="@+id/et_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button 
        android:id="@+id/btn_encrypt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="加密"/>
    <Button 
        android:id="@+id/btn_decrypt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="解密"/>   
    <TextView 
        android:id="@+id/tv_output"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
Step2:Activity代码就不贴出来了,无非就是获得上面4个控件,然后监听加密、解密两个按钮执行加解密工具类的加解密方法。

Step3:实现加解密工具类,这也是此篇博文的关键。下面来一步一步的分析:

先来看看官方给出的加密大致流程:Use a secure random number generator, SecureRandom, to initialize any cryptographic keys, 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Android中,RSA(Rivest-Shamir-Adleman)是一种非对称密算法,常用于数据的密和解密。RSA算法使用一对公钥和私钥来进行解密操作。 在Android中使用RSA解密可以通过以下步骤实现: 1. 生成密钥对:首先需要生成一对公钥和私钥。可以使用`KeyPairGenerator`类来生成密钥对,指定算法为RSA,并设置密钥长度。 2. 密数据:使用公钥对需要密的数据进行密。可以使用`Cipher`类来进行密操作,指定算法为RSA,并设置密模式为`Cipher.ENCRYPT_MODE`。 3. 解密数据:使用私钥对密后的数据进行解密。同样使用`Cipher`类来进行解密操作,指定算法为RSA,并设置解密模式为`Cipher.DECRYPT_MODE`。 下面是一个简单的示例代码: ```java // 生成密钥对 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(2048); KeyPair keyPair = keyPairGenerator.generateKeyPair(); // 获取公钥和私钥 PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); // 密数据 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedData = cipher.doFinal(data); // 解密数据 cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedData = cipher.doFinal(encryptedData); ``` 请注意,以上代码只是一个简单示例,实际使用时还需要考虑数据的编码、填充方式等细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值