- 浏览: 41924 次
- 性别:
- 来自: 深圳
最新评论
-
ivan19861025:
步入低谷的浪神 写道大神,能不能把你的包截图看看,都不知道哪个 ...
drools 学习之旅 <一> -
步入低谷的浪神:
大神,能不能把你的包截图看看,都不知道哪个文件是放在哪个包里面 ...
drools 学习之旅 <一> -
ivan19861025:
<div class="quote_title ...
Java并发编程-生成唯一序列号 -
ivan19861025:
<div class="quote_title ...
Java并发编程-生成唯一序列号 -
ivan19861025:
<div class="quote_title ...
Java并发编程-生成唯一序列号
AES
HmacMD5
MD5
RSA
package com.sf.core.sgs.utils; import java.security.Key; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Hex; public class AESCoder { public static final String ALGORITHM = "AES"; public static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding"; public static byte[] initKey(){ try { KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM); keyGenerator.init(128); return keyGenerator.generateKey().getEncoded(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e.getMessage(), e); } } private static Key toKey(byte[] key){ return new SecretKeySpec(key, ALGORITHM); } public static String encrypt(String data, String k) throws Exception { Key key = toKey(Hex.decodeHex(k.toCharArray())); Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); //初始化, 设置为加密模式 cipher.init(Cipher.ENCRYPT_MODE, key); byte[] enBytes = cipher.doFinal(data.getBytes()); return String.valueOf(Hex.encodeHex(enBytes)); } public static String decrypt(String data, String k) throws Exception{ Key key = toKey(Hex.decodeHex(k.toCharArray())); Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); //初始化, 设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, key); byte[] bytes = cipher.doFinal(Hex.decodeHex(data.toCharArray())); return new String(bytes); } public static void main(String[] args) throws Exception{ String inputStr = "123456"; byte[] k = AESCoder.initKey(); String keyStr = String.valueOf(Hex.encodeHex(k)); System.out.println("密钥: " + keyStr); String en = AESCoder.encrypt(inputStr, keyStr); System.out.println("密文: " + en); //解密 String de = AESCoder.decrypt(en, keyStr); System.out.println("解密后明文: " + new String(de)); } }
HmacMD5
public class MACEncoder { public static final String ALGORITHM = "HmacMD5"; public static byte[] initHmacMD5Key() throws Exception{ KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM); SecretKey secretKey = keyGenerator.generateKey(); return secretKey.getEncoded(); } public static byte[] encodeHmacMD5(byte[] data, byte[] key) throws Exception{ SecretKey secretKey = new SecretKeySpec(key, ALGORITHM); Mac mac = Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); return mac.doFinal(data); } public static void main(String[] args) throws Exception{ String id = "13141283947192347174"; String key = "11"; long t1 = System.currentTimeMillis(); System.out.println(encodeHmacMD5(id, key)); System.out.println(encodeHmacMD5(id, key)); System.out.println(encodeHmacMD5(id, key)); System.out.println(encodeHmacMD5(id, key)); System.out.println(System.currentTimeMillis() - t1); //System.out.println(Hex.encodeHex(initHmacMD5Key())); } public static String encodeHmacMD5(String data, String key) throws Exception{ SecretKey secretKey = new SecretKeySpec(Hex.decodeHex(key.toCharArray()), "HmacMD5"); Mac mac = Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); return String.valueOf(Hex.encodeHex(mac.doFinal(data.getBytes()))); } }
MD5
public class MD5Encoder2 { public static void main(String[] args) { String str = "12345"; try { MessageDigest digest = MessageDigest.getInstance("MD5"); byte[] bytes = digest.digest(str.getBytes()); System.out.println(Hex.encodeHex(bytes)); } catch (Exception e) { e.printStackTrace(); } } }
RSA
public class RSAEncoder { public static final String ALGORITHM = "rsa"; public static final String PUBLIC_KEY = "RSAPublicKey"; public static final String PRIVATE_KEY = "RSAPrivateKey"; public static final int KEY_SIZE = 512; /** * 私钥解密 * @param data * @param key * @return * @throws Exception */ public static byte[] decryptByPrivateKey(byte[] data, byte[] key) throws Exception{ PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(key); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, privateKey); return cipher.doFinal(data); } /** * 公钥加密 * @param data * @param key * @return * @throws Exception */ public static byte[] encryptByPublicKey(byte[] data, byte[] key) throws Exception{ X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(key); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, publicKey); return cipher.doFinal(data); } /** * 公钥加密 * @param data * @param key * @return * @throws Exception */ public static byte[] encryptByPublicKey(byte[] data, PublicKey publicKey) throws Exception { KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, publicKey); return cipher.doFinal(data); } /** * 公钥解密 * @param data * @param key * @return * @throws Exception */ public static byte[] decryptByPublicKey(byte[] data, byte[] key) throws Exception{ X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(key); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, publicKey); return cipher.doFinal(data); } /** * 私钥加密 * @param data * @param key * @return * @throws Exception */ public static byte[] encryptByPrivateKey(byte[] data, byte[] key) throws Exception{ PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(key); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); } /** * 初始化密钥 * @return * @throws Exception */ public static KeyPair initKey() throws Exception{ KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM); KeyPair keyPair = keyPairGenerator.generateKeyPair(); return keyPair; } public static void main(String[] args) throws Exception{ KeyPair keyPair = initKey();//密钥对 String data = "明文数据12345"; System.out.println("私钥: " + String.valueOf(Hex.encodeHex(keyPair.getPrivate().getEncoded()))); System.out.println("公钥: " + String.valueOf(Hex.encodeHex(keyPair.getPublic().getEncoded()))); byte[] byte1 = encryptByPublicKey(data.getBytes(), keyPair.getPublic().getEncoded()); System.out.println("公钥加密后: " + String.valueOf(Hex.encodeHex(byte1))); byte[] byte2 = decryptByPrivateKey(byte1, keyPair.getPrivate().getEncoded()); System.out.println("私钥解密后: " + new String(byte2)); byte[] byte3 = encryptByPrivateKey(data.getBytes(), keyPair.getPrivate().getEncoded()); System.out.println("私钥加密后: " + String.valueOf(Hex.encodeHex(byte3))); byte[] byte4 = decryptByPublicKey(byte3, keyPair.getPublic().getEncoded()); System.out.println("公钥解密后: " + new String(byte4)); } }
发表评论
-
EXCEL导入导出
2016-11-04 10:48 0<div class="iteye-blog- ... -
我的简历
2016-06-19 23:22 0我的简历 -
JAVA并发编程-多线程(2) 优雅退出JVM
2016-02-23 22:42 1520这里我不知道如何解释优雅一词 先看如下代码: publi ... -
JAVA并发编程-多线程(1)
2016-02-23 22:17 548在JAVA中线程分为用户线程和守护线程. 用户线程会阻止 J ... -
Java并发编程-生成唯一序列号
2016-02-03 11:27 22285所用到的并发编程库 import java.util.c ... -
待研究
2015-09-08 10:51 01. cassandra 弱事务 是什么概念 2. el ... -
drools 学习之旅 <一>
2015-09-06 18:26 1589先说一下我们的场景: 假如我们现在要给网站举办活动( ... -
Elasticsearch 学习之旅 <二> 插件安装
2015-09-02 15:15 1312插件安装分为两种方式 这里以安装 elasticse ... -
Elasticsearch 学习之旅 <一> 初体验
2015-09-02 14:31 12011. 安装 Elasticsearch 安装非常简单, ... -
google
2014-12-26 17:18 0https://wen.lu/webhp -
zookeeper
2014-12-09 18:40 0zookeeper -
diamond
2014-09-19 14:32 0diamond -
dubbo-admin
2014-09-18 17:41 0dubbo-admin -
shiro-example
2014-09-18 10:51 0shiro-example -
um1
2014-08-05 18:10 0um111111 -
jtest
2014-07-07 10:01 0aaaaa -
java web sso 实现
2014-03-07 11:34 1128见sso-server readme.txt -
java调用groovy脚本
2014-02-28 16:07 890import groovy.lang.GroovyClas ... -
JSON 工具类,操作JSON类型数据
2014-02-28 15:46 818public static JSONObject parse ... -
利用spring3 El 编写自已的 表达式工具类
2014-02-28 15:42 1279public class ExpressionUtils ...
相关推荐
Java中的RSA加密解密算法实现可以应用于各种Java项目,例如移动应用、Web应用等。 本文详细介绍了Java实现的RSA加密解密算法,包括密钥对生成、公钥和私钥的使用、加密和解密、密钥文件的生成等知识点。这些知识点...
SM4国密加密解密JAVA代码实现
在`cipher4j-master`这个项目中,可能包含了关于DES加密解密的Java实现,包括完整的类和示例代码,帮助开发者理解和使用DES。你可以下载并研究该项目,进一步了解如何在实际应用中集成DES加密解密功能。
加密、解密过程,需要传递四个变量。 加密的四个变量依次为:明文,代码1,代码2,代码3 解密的四个变量依次为:密文,代码1,代码2,代码3
"java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...
国产加密算法SM2加密解密java代码完整示例。里面有加密解密的示例,生成秘钥的示例,本人亲测有效。默认maven环境编译。若无maven环境,里面也上传了相关依赖jar包。
"java实现的RC4加密解密算法示例" RC4加密解密算法是Symmetric-key block cipher的一种,使用同一个密钥进行加密和解密。java实现的RC4加密解密算法可以通过以下步骤实现: 1. 初始化数组:创建一个大小为256的...
一段java语言加密和解密的代码
RC4加密算法的Java实现代码 简单清楚,不需要复杂的调试
java实现MD5加密解密算法,java源代码~
以下是一个简单的Java代码示例,演示了如何生成公钥和私钥对,并使用它们进行加密和解密: ```java import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; ...
总的来说,C#和Java之间的RSA加密解密通信涉及到多方面的知识,包括非对称加密原理、公钥私钥的生成和管理、不同编程语言间的互操作、数据安全传输以及可能的错误处理策略。掌握这些知识对于开发跨平台、高安全性的...
通过对代码的学习,你可以理解作者如何使用Java语言实现排列码加密和解密,并且可以根据实际需求进行修改或扩展。 总之,排列码在Java中的实现涉及到编码规则的生成、数据的预处理和后处理,以及核心的编码和解码...
### 知识点详解 #### 一、AES加密算法简介 **高级加密标准(Advanced Encryption Standard,AES)**是一种对称加密算法...通过以上介绍,我们可以了解到如何在Java中实现AES加密解密的基本流程,以及相关的注意事项。
该java文件中的方法主要实现AES加密、解密的功能
以上代码示例展示了如何在Java中实现ZIP压缩包的加密和解密。需要注意的是,加密后的ZIP文件需要保存密码以供解密时使用。此外,加密的强度取决于所选的加密算法和密码的复杂性。在实际应用中,应确保密码的安全存储...
文件名:FileEncrypter.java JDK:1.40以上 说明:文件加密 加密方法:三重DES加密 加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes"扩展名的加密文件 (完美加密,更改后缀名也不可以打开)解密过程:...
因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,解密的任意组合,当然也可自己简单改下参照序列顺序,使自己的加密解密变为独一的,网上无法使用工具解密出正确的数据。熟悉二进制的可...
在Java中实现RSA加密解密,可以帮助开发者保护敏感信息,例如在网络传输过程中防止数据被窃取。 首先,了解RSA的工作原理至关重要。它基于两个大素数的乘积,生成一对密钥:公钥和私钥。公钥可以公开,用于加密信息...