加密和解密的字符串:

package eoe.demo;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

/**

* Usage:

*

* String crypto = SimpleCrypto.encrypt(masterpassword, cleartext)

* ...

* String cleartext = SimpleCrypto.decrypt(masterpassword, crypto)

*

* @author ferenc.hechler

*/

public class SimpleCrypto {

public static String encrypt(String seed, String cleartext) throws Exception {

byte[] rawKey = getRawKey(seed.getBytes());

byte[] result = encrypt(rawKey, cleartext.getBytes());

return toHex(result);

}

public static String decrypt(String seed, String encrypted) throws Exception {

byte[] rawKey = getRawKey(seed.getBytes());

byte[] enc = toByte(encrypted);

byte[] result = decrypt(rawKey, enc);

return new String(result);

}

private static byte[] getRawKey(byte[] seed) throws Exception {

KeyGenerator kgen = KeyGenerator.getInstance("AES");

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");

sr.setSeed(seed);

kgen.init(128, sr); // 192 and 256 bits may not be available

SecretKey skey = kgen.generateKey();

byte[] raw = skey.getEncoded();

return raw;

}

private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = Cipher.getInstance("AES");

cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

byte[] encrypted = cipher.doFinal(clear);

return encrypted;

}

private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = Cipher.getInstance("AES");

cipher.init(Cipher.DECRYPT_MODE, skeySpec);

byte[] decrypted = cipher.doFinal(encrypted);

return decrypted;

}

public static String toHex(String txt) {

return toHex(txt.getBytes());

}

public static String fromHex(String hex) {

return new String(toByte(hex));

}

public static byte[] toByte(String hexString) {

int len = hexString.length()/2;

byte[] result = new byte[len];

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

result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();

return result;

}

public static String toHex(byte[] buf) {

if (buf == null)

return "";

StringBuffer result = new StringBuffer(2*buf.length);

for (int i = 0; i < buf.length; i++) {

appendHex(result, buf[i]);

}

return result.toString();

}

private final static String HEX = "0123456789ABCDEF";

private static void appendHex(StringBuffer sb, byte b) {

sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f));

}

}

android加密字符串,Android 加密解密字符串详解相关推荐

  1. python后端开发框架加密_Flask框架实现的前端RSA加密与后端Python解密功能详解

    本文实例讲述了Flask框架实现的前端RSA加密与后端Python解密功能.分享给大家供大家参考,具体如下: 前言 在使用 Flask 开发用户登录API的时候,我之前都是明文传输 username ...

  2. python写网页前端交易rsa加密_Flask框架实现的前端RSA加密与后端Python解密功能详解!...

    本文实例讲述了Flask框架实现的前端RSA加密与后端Python解密功能.分享给大家供大家参考,具体如下: 前言 在使用 Flask 开发用户登录API的时候,我之前都是明文传输 username ...

  3. ios php rsa加密解密,php rsa加密解密使用详解

    第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem 从上面看出通 ...

  4. PHP加密函数与解密函数详解

    本篇文章主要为大家详细介绍了PHP中的加密函数与解密函数 Php常用的加密函数有 MD5加密(不可逆).Crypt加密(不可逆).Sha1加密(不可逆).Urlencode加密(可逆) base64编 ...

  5. 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)

    在最近的项目中,前端后台数据交互需要进行加密之后传输使用,以保证系统数据的安全.有关数据加密解密的问题,有很多种加密的方式,在这里我选择了AES的加密方式.特此写下此篇博文,总结讲述下PHP和JS进行 ...

  6. nodejs java rsa_NodeJS加密解密及node-rsa加密解密用法详解

    要用nodejs开发接口,实现远程调用,如果裸奔太危险了,就在网上找了一下nodejs的加密,感觉node-rsa挺不错的,下面来总结一下简单的rsa加密解密用法 初始化环境 新建一个文件夹 node ...

  7. aes js加密php解密实例,基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_PHP_JS_AES源码...

    [实例简介] 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_PHP_JS_AES源码 [实例截图] [核心代码] 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_ ...

  8. Android 各大厂面试题汇总与详解(持续更新)

    介绍 目前网络中出现了好多各种面试题的汇总,有真实的也有虚假的,所以今年我将会汇总各大公司面试比较常见的问题,逐一进行解答.会一直集成,也会收集大家提供的面试题,如有错误,请大家指出,经过排查存在,会 ...

  9. Android 8.0学习(32)---Android 8.0源码目录结构详解

    Android 8.0源码目录结构详解 android的移植按如下流程:     (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     (2)正确挂载文件系统 ...

  10. android组件用法说明,Android第三方控件PhotoView使用方法详解

    Android第三方控件PhotoView使用方法详解 发布时间:2020-10-21 15:06:09 来源:脚本之家 阅读:74 作者:zhaihaohao1 PhotoView的简介: 这是一个 ...

最新文章

  1. Open3d学习计划—高级篇 4(多视角点云配准)
  2. 少一些计较多_新的一年:少一分计较,多一分宽容
  3. 7 兼容 因特尔十代_年终抄底十代酷睿 请务必看看它……- ——快科技(驱动之家旗下媒体)-...
  4. 在tensorflow中的网格图问题--np.mgrid()
  5. 用SQL语言建表,课1
  6. 数据结构之单项链表的操作
  7. Vista Dynamips模拟器安装
  8. 2-docker 安装
  9. 生活中回归分析实际例子_回归分析中R方和调整R方的区别
  10. python制作查询工具发给别人使用_用Python制作天气查询软件
  11. MLFlow︱机器学习工作流框架:介绍(一)
  12. php1到5000排序,php排序1亿个号码
  13. ios浏览器微信支付回调页面_iOS微信系列,WKWebview加载H5进行微信支付返回浏览器解决方案!...
  14. Ubuntu10.10下安装Tor,PolipoVidalia
  15. 时间漩涡的世界 (一)
  16. 微信商户号企业付款到零钱开通地址
  17. 自然语言处理之中文文本分析(jieba分词、词袋doc2bow、TFIDF文本挖掘)
  18. 有特点的3D网络拓扑图
  19. 如何在html中添加图片的自动滚播,制作网页中的滚动图片,怎样循环播放。
  20. 转载_ASK,OOK,FSK,GFSK简介

热门文章

  1. 【特别优惠征稿】2022年第二届人工智能与云计算国际会议
  2. 口语语汇单词篇(10)
  3. General error: 1366 Incorrect string value: '\xF0\x9F\x98\x8A' for column
  4. 学计算机得肩周炎,肩周炎的拔罐疗法
  5. linux不能显示文本文件内容的命令,Linux之文本文件查看命令
  6. windows10安装oracle数据库
  7. 计算机调出任务管理器的组合键是,调出任务管理器快捷键
  8. 使用浏览器插件,下载网页中的图片
  9. CUDA浅尝辄止-----什么是CUDA
  10. 从苏宁电器到卡巴斯基第24篇:难忘的三年硕士时光 II