Android的异或加密解密算法解析
来源:互联网 发布:社交软件英语 编辑:程序博客网 时间:2024/05/20 06:05
异或加密算法原理
异或运算中,如果某个字符(或数值)x 与 一个数值m 进行异或运算得到y,则再用y 与 m 进行异或运算就可以还原为 x ,因此应用这个原理可以实现数据的加密解密功能。
异或加密使用场景
1.两变量互换值,不引进第三个变量。
2.简单的数据加密算法。
使用 看代码:
public class XOPActivity extends Activity { private EditText editText; private String encodedString ; private Button butde , buten ; private byte[] data ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base64); editText = (EditText) findViewById(R.id.tv); butde = (Button) findViewById( R.id.debut); buten = (Button) findViewById( R.id.enbut); //加密 butde.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //data = encrypt(editText.getText().toString().getBytes()); data = encryptkey(editText.getText().toString().getBytes()); } }); //解密 buten.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //editText.setText(encrypt(data).toString()); editText.setText(decrypt(data).toString()); } }); } /** * 异或加密解密 (使用不定的 key ) 加密解密同一个方法 * @param bytes * @return */ public byte[] encrypt(byte[] bytes) { if (bytes == null) { return null; } int len = bytes.length; int key = 0x12; for (int i = 0; i < len; i++) { bytes[i] ^= key; } return bytes; } //==========使用不规定的 key ============//* /** *使用不规定key加密 * @param bytes * @return */ public byte[] encryptkey(byte[] bytes) { if (bytes == null) { return null; } int len = bytes.length; int key = 0x12; for (int i = 0 ; i < len ; i++) { bytes[i] = (byte) (bytes[i] ^ key); key = bytes[i]; //key在变化 } return bytes; } /** * 使用不固定key解密 * @param bytes * @return */ public byte[] decrypt(byte[] bytes) { if (bytes == null) { return null; } 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; }}
xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout android:id="@+id/activity_base64" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="46dp" android:text="Hello World!"/> <Button android:id="@+id/debut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="baseEncode" android:text="base64编码"/> <Button android:id="@+id/enbut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="baseDecode" android:text="base64解码"/></LinearLayout>
比较简单
0 0
- Android的异或加密解密算法解析
- 简单的异或加密解密算法
- php异或加密解密算法的实现
- Java简单的加密解密算法,使用异或运算
- Android RSA加密解密算法解析
- 异或(XOR)运算加密/解密算法
- 异或加密解密
- android加密解密算法
- Android用到的DES加密解密算法
- IOS 异或加密解密
- Android Base64加密解密算法
- Android DES加密解密算法
- Android-RSA算法加密解密
- android或java,加密解密文件
- 用异或的性质实现简单加密解密
- 利用^异或进行密码的加密和解密
- 通过位运算的异或运算符加密解密
- java对文件简单的加密解密(异或运算)
- oracle 数据库 50道经典例题
- s5pv210——LCD的原理和实战
- 大数相乘
- SpringBoot集成篇(一)无状态shiro
- mysql索引总结
- Android的异或加密解密算法解析
- 解析算术表达式
- C++PRIMER第一轮复习第九章 顺序容器
- git上传项目到github的常用命令
- 【java证书】JDK自带工具keytool生成ssl证书(第三步clinet有误,是client1)
- Glide
- JS对象和JSON
- 如何使用yum来下载RPM包而不进行安装
- 【架构设计】【程序指标】鲁棒性与健壮性的细节区别