- 浏览: 162338 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
沙舟狼客:
为了方便使用可以配置到环境变量里面MINGW_HOME=C:\ ...
windows下用mingw32+sdl进行简单2d游戏开发(c语言) -
沙舟狼客:
如果安装autotools时不用gcccc相当于gcc的链接n ...
windows下用mingw32+sdl进行简单2d游戏开发(c语言) -
lirihong:
java中文乱码完全解决方案 ?? 高度很高,深度、全面度全 ...
java中文乱码完全解决方案 -
沙舟狼客:
非常适合想写windows游戏的菜鸟
windows下用mingw32+sdl进行简单2d游戏开发(c语言) -
xixilive:
噢喔~~语义全无
京东导航的jquery实现
1、非对称密钥:
package com.mysec; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import static com.mysec.myutil.Util.println; public class MDTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { byte[] pw1 = new String("dkfdsfsdflasdfasdfasdf").getBytes(); byte[] pw2 = new String("dkfdsfsdflasdfasdfasdf").getBytes(); //MD2/MD5/SHA1 //非对称密钥 MessageDigest md = MessageDigest.getInstance("MD5"); System.out.println("服务提供者:"+md.getProvider()); byte[] b1 = new String("这是散列字节").getBytes(); md.update(b1); byte[] r1 = md.digest(pw1); md.update(b1); byte[] r2 = md.digest(pw2); println("pw1加密后:"+new String(r1)); println("pw2加密后:"+new String(r2)); //转换为16进制方便读取放入数据库 println(convertHex(r1)); println(convertHex(r2)); println(md.isEqual(r1, r2)); //println(md.getAlgorithm()); //println(md.getDigestLength()); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static String convertHex(byte[] b){ StringBuffer sb = new StringBuffer(); for(byte tmp:b){ sb.append(Integer.toHexString(tmp&0XFF)); } return sb.toString(); } }
2、对称密钥算法
package com.mysec; import static com.mysec.myutil.Util.println; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; public class CipherTest { /** * @param args * @throws NoSuchPaddingException * @throws NoSuchAlgorithmException */ public static byte[] encoder(Key key,String text){ return null; } public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { // TODO Auto-generated method stub //对称算法名 String info = "this is a my info!"; KeyGenerator generator = KeyGenerator.getInstance("DES"); //初始化长度,DES只能是56 generator.init(56); //生成密钥 Key key = generator.generateKey(); byte[] keyEncode = key.getEncoded(); println("密钥是:"+toHexString(keyEncode)); Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); println(cipher.getProvider().getName()); println("原文:"+info); //用cipher进行加密 cipher.init(Cipher.ENCRYPT_MODE,key); byte[] encoderResult = cipher.doFinal(info.getBytes()); println("密文:"+toHexString(encoderResult)); //用cipher进行解密 cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptResult = cipher.doFinal(encoderResult); println("解密后:"+new String(decryptResult)); } public static String toHexString(byte[] b){ StringBuffer sb = new StringBuffer(); for(int i=0;i<b.length;i++){ sb.append(Integer.toHexString(b[i]&0XFF)); } return sb.toString(); } }
3、数字签名
package com.mysec; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import static com.mysec.myutil.Util.println; public class SignTest { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub String info = "this is my info!"; //获得密钥对 KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); //初始化长度 generator.initialize(1024); //生成密钥对 KeyPair keyPair = generator.generateKeyPair(); //获得私钥 PrivateKey privateKey = keyPair.getPrivate(); println("私钥是:"+toHexString(privateKey.getEncoded())); //获得公钥 PublicKey publicKey = keyPair.getPublic(); println("公钥是:"+toHexString(publicKey.getEncoded())); Signature sign = Signature.getInstance("MD5WithRSA"); //对私钥进行签名 sign.initSign(privateKey); sign.update(info.getBytes()); //获得签名值 byte[] signature = sign.sign(); println("签名值是:"+toHexString(signature)); //用公钥初始化签名对象 sign.initVerify(publicKey); //这里应该是解密后的信息,这里直接用原来的 sign.update(info.getBytes()); //签证签名 if(sign.verify(signature)){ System.out.println("验证签名成功!"); }else{ System.out.println("验证签名失败!"); } } public static String toHexString(byte[] b){ StringBuffer sb = new StringBuffer(); for(int i=0;i<b.length;i++){ sb.append(Integer.toHexString(b[i]&0XFF)); } return sb.toString(); } }
发表评论
-
java中文乱码完全解决方案
2013-11-18 22:05 24361、代码编码全部用UTF8,特别是配置用的属性文件 2、J ... -
Highcharts动态曲线图(使用jna监视cpu使用率)
2012-01-10 22:30 92731、CPU使用率获取,因为我要用JNA调用,所以用c++调用w ... -
grails验证码插件-JCaptcha
2012-01-10 12:56 23781、安装 grails install-plugin jca ... -
jogl入门之简单的贪吃蛇
2012-01-05 13:43 20211、代码: package org.ligson.jo ... -
jogl入门
2011-12-31 13:19 51341、jogl是什么? jogl是Java OpenGL的 ... -
grails学习之自定义标签
2011-12-30 17:22 57891、在grails项目结构中有一个taglib文件夹(项目名/ ... -
加密机制的发展(JCE/JCA)
2011-12-23 17:56 4855一、对称密钥-------最原始的加密解密 对称 ... -
开发一个JCE的Provider
2011-12-23 13:42 44921、开发环境ubuntu+eclipse+openJDK ... -
enum还有人记得吗?
2011-12-21 15:42 1119enum其实挺好用的,特别是对于一些固定的东西! packa ... -
JNA入门1
2011-12-06 22:15 37221、jna是什么 jna是java native acces ... -
利用BC替换X509证书的公钥
2011-11-23 09:54 2258public static X509Certificate r ... -
利用BC的X509v3CertificateBuilder组装X509证书
2011-11-22 17:38 3905// 设置开始日期和结束日期 long year = 3 ... -
grails框架中webService插件的使用(axis2,cxf)
2011-09-17 22:40 3222一、cxf插件的使用: 1、运行命令: grails in ... -
Java直接发送邮件或写好的eml邮件
2011-08-03 13:50 1543import java.io.File; import ... -
利用bouncycastle组装X509证书
2011-08-02 19:02 9492CreateCert.java package com.se ... -
eclipse3.6 太阳神版 中文汉化插件
2011-04-09 20:00 1167经常用eclipse,但用多了英文版,突然间想找个新鲜感,于是 ... -
Java中的按位取反运算符,哪位能详解一下?
2011-03-14 23:29 2257最近面试遇到了这样一道题: System.out.print ... -
Java常见排序算法
2011-02-24 17:53 863package test; import java ... -
常见模式例子
2011-02-24 17:37 1033工厂模式 package login.sj; ... -
关于Java中各种修饰符与访问修饰符的说明
2011-02-24 15:05 1037类: 访问修饰符 修饰符 class 类名称 exte ...
相关推荐
4. **数字签名**:非对称密钥还常用于数字签名,发送方使用私钥对信息哈希值进行签名,接收方可以使用发送方的公钥验证签名的真实性,从而确认信息未被篡改。 非对称密钥加密技术对比对称密钥有以下优势: - **...
非对称加密算法和数字签名是信息技术中两个关键的安全概念,尤其在网络安全和数据保护方面起着至关重要的作用。在Java编程环境中,这些技术被广泛应用于实现安全通信、身份验证和数据完整性保护。 非对称加密算法,...
这种方法允许两个通信方在不共享任何预共享密钥的情况下建立安全的通信信道,常用于安全通信、数据加密和数字签名等领域。 2. **参考文献**: 报告中可能引用了多个与公钥密码学、对称加密、因子分解难题以及相关...
信息技术的发展,大致分为电讯技术的发明,19世纪30年代开始 , 计算机技术的发展,20世纪50年代开始 ,和互联网的使用 20世纪60年代开始三个阶段。...5.数字签名是非对称密钥加密技术与数字摘要技术的综合应用
Java中的Blowfish对称密钥加密算法是一种广泛使用的数据加密技术,特别是在网络通信和存储安全领域。Blowfish算法由Bruce Schneier在1993年设计,以其高效和安全著称。它属于对称密钥加密体系,这意味着加密和解密...
在实际应用中,通常结合使用,如HTTPS协议,先用非对称加密交换对称密钥,然后用该密钥进行数据的对称加密,以兼顾效率和安全性。 总结,Java的对称加密如DES、AES和非对称加密如RSA、DSA是保障信息安全的重要工具...
本文将深入探讨Java环境下使用RSA非对称加密和AES对称加密的方法,以及如何通过过滤器实现入口和出口的统一处理。首先,我们来理解这两种加密算法。 **RSA非对称加密** RSA是一种非对称加密算法,其核心在于一对...
在公钥基础设施(PKI)中,非对称密钥用于创建和验证数字签名。发送者使用其私钥对数据进行签名,接收者则用发送者的公钥来验证签名。这确保了数据未被篡改且确实来自声称的发送者。例如,SSL/TLS证书中的数字签名...
基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称...
- **密钥生命周期管理**:详细介绍了对称密钥从生成、分发、存储到销毁整个生命周期中的安全要求和操作流程。 - **密钥安全管理机制**:深入探讨了用于保护密钥不被非法访问或篡改的安全机制,如密钥封装方法、密钥...
总的来说,Go语言提供的`crypto`包使得非对称加密和数字签名的实现变得非常方便。通过理解并熟练运用这些技术,开发者可以构建更加安全的应用程序,保护用户数据,防止中间人攻击和其他网络安全威胁。在Go-非对称...
在IT领域,对称加密是一种常见的数据保护方法,它涉及到使用相同的密钥进行加密和解密操作。...同时,为了增加安全性,通常会结合非对称加密或密钥分发协议(如Diffie-Hellman)来管理和交换对称密钥。
5.用对称密钥对(原文和签名)进行加密 6.用对方的公钥对称密钥进行加密(加密密钥) 7.将密文(5)和加密密钥(6)一起发给对方 接收方: 1.用自己的私钥对加密密钥进行解密,得到对称密钥--也只有自己才能...
GMT 0051-2016 密码设备管理 对称密钥管理技术规范是中国国家标准,旨在规范对称密钥的生成、分配、存储、使用和销毁等过程。 1. 密钥管理技术概述 密钥管理技术是指对密钥的整个生命周期的管理,包括密钥的生成、...
SQL 非对称密钥 创建、删除、加密、解密、全部密匙查看等。
1. **范围**:规范覆盖了对称密钥管理系统的各个方面,包括系统设计、安全要求、功能结构、指令与接口,以及建设要求等,适用于需要使用对称密钥进行数据加密和解密的各类商用密码设备。 2. **规范性引用文件**:...
0051-2016 密码设备管理 对称密钥管理技术规范.pdf
Java加密和数字签名编程是Java开发中的重要领域,主要用于数据安全和身份验证。在这个快速入门教程中,我们将探讨Java如何实现这些功能,并提供基础实践。 一、Java加密 1. 密码学基础:了解对称加密(如AES)和非...
通过阅读"Java加密和数字签名编程快速入门",无论是初学者还是有一定经验的开发者,都能掌握Java中加密和数字签名的基本原理和实际应用。"www.pudn.com.txt"可能是提供额外链接或资源的文本文件,而"Java加密和数字...
通常,我们会用对称加密来加密大量数据,然后用非对称加密来保护对称密钥,确保密钥的安全传输。 在"Java非对称加密源码实例.zip"这个压缩包中,可能包含了一些具体的Java源代码示例,这些示例展示了如何在实际项目...