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)
上一篇 2022年5月13日 上午6:00
下一篇 2022年5月13日 上午6:20


相关推荐

  • 在 Windows 上安装 DeepSeek 的完整指南

    在 Windows 上安装 DeepSeek 的完整指南

    2026年3月15日
    2
  • Java中XML运用总结

    Java中XML运用总结XML 简介:可扩展标记语言(eXtensibleMarkupLanguage)。特性:1.xml具有平台无关性,是一门独立的标记语言.2.xml具有自我描述性为什么学习XML?1.网络数据传输.2.数据存储3.配置文件XML文件.XML文件是保存XML数据的一种方式XML数据也可以以其他的方式存在(如在内存中构建XML数据)。不要将XML语言狭隘的理解成XML文件。XML语法格式1.XML文档声明<?xmlversio..

    2022年7月7日
    26
  • fastJson注解@JSONField 的作用及其效果「建议收藏」

    【基于fastjson】如果你想让一个实体类里面的某些属性不参与转换成为json字符串,那么使用@JSONField就很舒服。废话不多说,我们看代码!!!!如:User实体类,我在age属性上面使用了这个注解@JSONFieldimportcom.alibaba.fastjson.annotation.JSONField;importjava.io.S…

    2022年4月16日
    210
  • CTK插件框架学习3-第一个插件编写

    CTK插件框架学习3-第一个插件编写前两章把CTK插件库编译好了,这里篇编写一个插件试一下,共需要创建两个小工程,一个是插件库,一个是测试程序。1.插件库编写1.1创建工程打开Qtcreator,新建一个EmputyqmakeProject,并给工程命名为ctk-plugin-first。Kits选择”DesktopQt5.12.3MSVC201764bit”。更改ctk-plugin-first.pro文…

    2022年5月18日
    45
  • Linux 运行jar包命令[通俗易懂]

    Linux 运行jar包命令[通俗易懂]方式一:java-jarshareniu.jar特点:当前ssh窗口被锁定,可按CTRL+C打断程序运行,或直接关闭窗口,程序退出那如何让窗口不锁定?方式二java-jarshareniu.jar&amp;&amp;代表在后台运行。特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。继续改进,如何让窗口关闭时,程序仍然运行?方式三nohupj…

    2025年6月21日
    2
  • 云原生(三十六) | Kubernetes篇之Harbor入门和安装

    云原生(三十六) | Kubernetes篇之Harbor入门和安装Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器 作为一个企业级私有 Registry 服务器 Harbor 提供了更好的性能和安全 提升用户使用 Registry 构建和运行环境传输镜像的效率 Harbor 支持安装在多个 Registry 节点的镜像资源复制 镜像全部保存在私有 Registry 中 确保数据和知识产权在公司内部网络中管控 另外 Harbor 也提供了高级的安全特性 诸如用户管理 访问控制和活动审计等

    2026年3月18日
    2

发表回复

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

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