package com.devchina.scurity;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class SecurityEnDe {
private static final String defalutSeed = "devchina";
private static final String algorithm = "AES";
private final static String HEX = "0123456789ABCDEF";
public static String encrypt(String cleartext) throws Exception {
return encrypt(defalutSeed, cleartext);
}
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 encrypted) throws Exception {
return decrypt(defalutSeed, encrypted);
}
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(algorithm);
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, algorithm);
Cipher cipher = Cipher.getInstance(algorithm);
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, algorithm);
Cipher cipher = Cipher.getInstance(algorithm);
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 static void appendHex(StringBuffer sb, byte b) {
sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
}
}
分享到:
相关推荐
android客户端写的DES加密解密源代码 ,对应C#写的加密解密源代码。已经实际使用,两者加密解密结果完全一致。
Android 对客户端信息加密的源码,WhisperSystems,源码中一共有289 个代码文件,全部是英文的注释,来自国外的原生Android代码。
针对java后端进行的RSA加密,android客户端进行解密,结果是部分乱码的问题: 注意两点,编码问题和客户端使用的算法问题 即:都使用UTF-8编码,Base64使用一致,另外,使用下面的代码在后端和移动端解密只有一点...
这是解决android从客户端到服务器解决中文乱码的好方法啊!
TextSecure是Android下的加密聊天客户端,旨在增强用户和企业通信的安全性。TextSecure 的服务器端代码请看:https://github.com/WhisperSystems/TextSecure-Server AGPL 许可证,同样基于 Java 开发。 ...
下的加密信息客户端.zip
一款基于Google Material Design,采用MVP模式设计开发的Android密码管理客户端--怕死我的(PassWord)如果对你有帮助,欢迎多多的star 屏幕截图 用到的技术点: MVP模式 数据库采用了Realm DataBinding,...
下的加密信息客户端WhisperSystems-TextSecure.zip
本篇文章主要介绍了android基于socket的局域网内服务器与客户端加密通信,这里整理了详细的代码,有需要的小伙伴可以参考下。
参考Android客户端以获取I3分散数据市场的传感器数据这是Decentralized Data Marketplace实例的参考Android客户端实现(需要Android Oreo或更高版本的操作系统)。 Intelligent IoT Integrator(I3)已创建代码( )...
Android下的加密信息客户端 WhisperSystems-TextSecure.zip Android代码调用C++代码和C++代码调用Android代码.zip Android全能视频播放器 VPlayer.rar android基于自定义适配器的ExpandableListView.zip Android手机...
摘要:Java源码,Android源码,Android加密 收集的Andriod源码,本源码主要是介绍一款Android下的加密信息客户端软件——WhisperSystems-TextSecure,源码相当完整,是一套不错的Android编程学习资料。
protools 历经开发周期两年,并且应用过千万级别项目的工具箱 ...大家如果想使用可以先执行mvn clean install即可在本地的其他maven项目中使用 ...封装了 jdk 和 bouncycastle 中几十种常见加密方式all
EteSync-安全数据同步安全,端到端加密和尊重隐私的联系人,日历和任务同步(Android客户端)。概述请访问以获取更多信息。 EteSync已根据获得。建造EteSync使用git-submodules ,因此克隆代码需要稍微不同的命令。 ...
此资源实现安卓APP注册登录功能,通过Android Studio编写界面和相应功能,用Eclipse开启web服务器进行客户端与服务端之间的通信,并且将用户的账户密码经过MD5的加密后存入Mysql数据库中。
若水新闻客户端和服务端一个android初学者很好的学习案例代码,这个项目我们可以学到很多东西,像百度新闻的布局、手机客户端和服务器之间的数据交互、数据的异步加载、加密等等。提供给大家源代码下载!
Web3 Java以太坊ÐappAPI Web3j是一个轻量级,高度模块化,React性,类型安全的Java和Android库,用于处理智能合约并与以太坊网络上的客户端(节点)集成: 这使您可以使用链,而无需为平台编写自己的集成代码而产生...
键库 嗨,欢迎来到Keybase客户仓库。 该存储库中正在积极开发我们所有的客户端应用程序(macOS,...代码布局go :核心加密库; Keybase服务; 命令行客户端。shared / {android,ios} :使用开发的Android和iOS应
** APKEncryptor-Android:**用于加密的客户端 ** APKEncryptor-Server:**用于验证VIP的服务器 ** APKEncryptor-Tools:**加密资产 ** KeyCreateor-Andtoid:**贵宾钥匙 **子应用:**外壳 执照: 版权(c) “ ...
Bitseal是Android的客户端。 请注意,由于时间限制,Bitseal当前未处于积极开发中。 根据的条款,任何人都可以自由使用或开发Bitseal。 屏幕截图 工作特征 传送讯息 接收讯息 地址的QR码 地址簿 汇入地址 汇出地址 ...