android中的加密算法,Android中加密算法[通俗易懂]

android中的加密算法,Android中加密算法[通俗易懂]Android中的加密算法可以分为两类:对称加密和非对称加密对称加密(DES、3DES、AES)概念对称加密算法中,发送方将明文和加密密匙经过特殊加密算法处理后,使其形成变成复杂的密文后发送出去。接受方用同样的密匙、同样加密算法的逆算法对密文进行解密。传统的DES加密算法只有56位密匙,最新AES技术拥有128位密匙。大大提高了安全性。优点:算法公开、计算量小、加密速度快、加密效率高缺点:发送…

大家好,又见面了,我是你们的朋友全栈君。

Android中的加密算法可以分为两类:对称加密 和 非对称加密

对称加密(DES、3DES、AES)

概念

对称加密算法中,发送方将明文和加密密匙经过特殊加密算法处理后,使其形成变成复杂的密文后发送出去。接受方用同样的密匙、同样加密算法的逆算法对密文进行解密。传统的DES加密算法只有56位密匙,最新AES技术拥有128位密匙。大大提高了安全性。

优点:算法公开、计算量小、加密速度快、加密效率高

缺点:发送方和接受方拥有同样的密匙,安全问题得不到保证;管理密匙会成为额外的负担;可逆。

非对称加密(MD5、SHA、RSA、DSA)

概念

非对称加密算法中,发送方和接收方需要使用完全不同但又完全匹配的一对钥匙即 公匙 和 私匙来加密和解密数据。如果发送方只想要接收方解密数据,发送方就需要先拿到接收方的公匙,并且发送方并不知道接收方的私匙。

优点:安全,不可逆

Base64

Base64其实就是将数据进行base64编码传输,不算什么加密算法。

异或加密

原理:某个值异或一个数2次后,得到是本身

异或运算中,如果某个字符(或数值)x 与 一个数值m 进行异或运算得到y,则再用y 与 m 进行异或运算就可以还原为 x ,因此应用这个原理可以实现数据的加密解密功能。

//固定key的方式

public byte[] encrypt(byte[] bytes) {

int len = bytes.length;

int key = 0x12;

for (int i = 0; i < len; i++) {

bytes[i] ^= key;

}

return bytes;

}

//测试

byte[] bytes = encrypt(“whoislcj”.getBytes());//加密

String str1 = new String(encrypt(bytes));//解密

//不固定 (加密)

public byte[] encrypt(byte[] bytes) {

int len = bytes.length;

int key = 0x12;

for (int i = 0; i < len; i++) {

bytes[i] = (byte) (bytes[i] ^ key);

key = bytes[i];

}

return bytes;

}

//解密

public byte[] decrypt(byte[] bytes) {

int len = bytes.length;

int key = 0x12;

for (int i = len – 1; i > 0; i–) {

bytes[i] = (byte) (bytes[i] ^ bytes[i – 1]);

}

bytes[0] = (byte) (bytes[0] ^ key);

return bytes;

}

//测试

byte[] bytes = encrypt(“whoislcj”.getBytes());//加密

String str1 = new String(decrypt(bytes));//解密

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145256.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 二叉树的实现

    二叉树的实现

    2021年10月6日
    163
  • jQuery EasyUI+ashx实现数据库的CIUD操作

    jQuery EasyUI+ashx实现数据库的CIUD操作对上一个小项目做一个回顾总结,涉及到了jQueryEasyUI+ashx实现数据库的CIUD操作,和大家分享一下。基本思路是用easyui做前端,ashx做后端,中间使用json格式交换数据,其中json主要使用Newtonsoft.Json来序列化和反序列化,为简单起见,后端没有分层,数据都是靠拼接sql,使用一个简单封装的DBHelper来时间数据库的操作。1、数据库表tb_Provid

    2025年6月14日
    3
  • [Vue warn]: Do not use built-in or reserved HTML elements as component id: content「建议收藏」

    [Vue warn]: Do not use built-in or reserved HTML elements as component id: content「建议收藏」一、错误在Vue中引入组件报错:[Vue warn]: Do not use built-in or reserved HTML elements as component id: content二:原因在vue里面不允许用特殊的标签来做自定义的标签比如你不能用a来接收一个组件的注册然后在以自定义标签的方式引用会被限制三、结果方法将冲突的content替换成‘v-content…

    2022年6月13日
    38
  • mysql错误码2058_MySQL 1045

    mysql错误码2058_MySQL 1045配置新连接报错:错误号码2058,分析是mysql密码加密方法变了。解决方法:windows下cmd登录mysql-uroot-p登录你的mysql数据库,然后执行这条SQL:ALTERUSER’root’@’localhost’IDENTIFIEDWITHmysql_native_passwordBY’password’;(注意分号)#password是你…

    2022年10月2日
    5
  • node gyp rebuild_running setup.py install for

    node gyp rebuild_running setup.py install for一、安装node-gypnpminstall-gnode-gyp二、若安装node-gyp后无法使用1、切换至root账户2、添加环境变量的路径:修改/etc/profilevi/etc/profile在底部加入exportPATH=/opt/node/bin:/opt/node/lib/node_modules/npm/bin/node-gyp-bin:$PATH…

    2025年11月2日
    3
  • raid0和raid1的区别

    raid0和raid1的区别RAID是英文RedundantArrayofIndependentDisks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。组成磁盘阵列的不同方式称为RAID级别(RAIDLevels)。集中管理思想:资源整合,用统一标准进行管理它们共同点…

    2022年7月15日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号