Bouncy Castle

RSA加解密

雨燕双飞 提交于 2020-12-16 20:33:30
公私钥生成 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.security.Key; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.util.HashMap; import java.util.Map; public class CreateSecrteKey { public class Keys { } public static final String KEY_ALGORITHM = "RSA"; //public static final String SIGNATURE_ALGORITHM = "MD5withRSA"; private static final String PUBLIC_KEY = "knpubPublicKey"; private static final String PRIVATE_KEY = "knpubPrivateKey"; //获得公钥

Java 常见摘要算法——md5、sha1、sha256

不想你离开。 提交于 2020-11-22 06:56:24
目录 摘要算法简介 md5 使用jdk内置方法实现md5加密 使用bc方式实现md5加密 使用cc方式实现md5加密 sha1 使用jdk内置方法实现sha1加密 使用bc方式实现sha1加密 使用cc方式实现sha1加密 实现sha256的代码和sha1的代码相似 摘要算法简介   摘要算法,也是加密算法的一种,还有另外一种叫法:指纹。摘要算法就是对指定的数据进行一系列的计算,然后得出一个串内容,该内容就是该数据的摘要。不同的数据产生的摘要是不同的,所以,可以用它来进行一些数据加密的工作:通过对比两个数据加密后的摘要是否相同,来判断这两个数据是否相同。   还可以用来保证数据的完整性,常见的软件在发布之后,会同时发布软件的md5和sha值,这个md5和sha值就是软件的摘要。当用户将软件下载之后,然后去计算软件的摘要,如果计算所得的摘要和软件发布方提供的摘要相同,则证明下载的软件和发布的软件一模一样,否则,就是下载过程中数据(软件)被篡改了。   常见的摘要算法包括:md、sha这两类。md包括md2、md4、md5;sha包括sha1、sha224、sha256、sha384、sha512。 md5   md摘要算法包括多种算法:分别是md2、md4、md5。现在一般都是使用md5进行加密。   Java中实现md5加密,有三种方式:   使用jdk内置的方法实现实现md5加密

国密SM2签名完整流程

前提是你 提交于 2020-11-05 10:30:28
因工作要求,需要将原RSA签名改成SM2国密签名,研究了下,记录下整个流程: 使用openssl(1.1.1版本以上)生成sm2公私钥 openssl ecparam -genkey -name SM2 -noout -out pri.pem #生成私钥,私钥默认是pem文件格式 openssl pkcs8 -topk8 -inform PEM -in pri.pem -nocrypt -out pri_pkcs8.pem #将pem文件格式的私钥,转成java可解析的pkcs8格式 openssl ec -in pri_pkcs8.pem -pubout -out pub.pem #生成公钥 pri.pem内容如下: -----BEGIN EC PRIVATE KEY----- MHcCAQEEIFa7yVLqfOUKk5ArP2p6XtfuuKWvKmWsZXtABztd0mLtoAoGCCqBHM9V AYItoUQDQgAEuiraG1y/mt/eUK61sl/YWTX55x0ZKvxzjunWokbs3B3JzlF4SDG1 DDYef4uQGUL9DQMZDYQLIidRjpTjlEGYbQ== -----END EC PRIVATE KEY----- pri_pkcs8.pem内容如下: -----BEGIN PRIVATE KEY-----

pulsar 2.6.0 bouncy-castle-bc-shaded 包跟 bcpkix-jdk 版本冲突 .BouncyCastleProvider

不羁的心 提交于 2020-10-09 04:21:38
pulsar 2.6.0 bouncy-castle-bc-shaded 包跟 bcpkix-jdk 版本冲突 .BouncyCastleProvider <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <exclusions> <exclusion> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.dominos.common</groupId> <artifactId>dominos-mq</artifactId> <version>0.0.1-SNAPSHOT</version> <exclusions> <exclusion> <groupId>org.apache.pulsar</groupId> <artifactId>bouncy-castle-bc-shaded</artifactId> </exclusion> </exclusions> <

android双向认证(自签名证书) bks的生成方法

做~自己de王妃 提交于 2020-08-17 23:38:24
网上很多文章都是只能单向认证,特在此记录双向自签名证书。 windows电脑配置 BouncyCastleProvider 1. 下载 bcprov-ext-jdk15on-159.jar 2. 这个 jar文件放在 Java 主目录下的 jdk/jre/lib/ext目录下 3. 修改jdk/ jre/lib/security/java.security这个文件:在List of providers 注释的地方添加这一行 security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider 4. 重启终端,输入命令行: keytool -importkeystore -srckeystore client.p12 -srcstoretype pkcs12 -destkeystore client.bks -deststoretype bks -provider org.bouncycastle.jce.provider.BouncyCastleProvider 貌似要输入三次密码,记得问后台人员密码。 5.第4步中的client.p12是后台人员给的, 文章在这里 。 6. android代码中assets放入生成的client.bks和client.p12,网络框架使用基于okhttp的okgo框架

一文详解密码学中的Hash算法

南楼画角 提交于 2020-08-16 06:52:36
一文详解密码学中的Hash 算法 上一篇 文章 里面,我们介绍了随机数以及随机数中的应用,可以看到密码学中到处都有随机数的身影,这种作为大部分密码学算法的基本组成被称之为 “加密基元“。今天我们一起来看一下另外一个加密基元 - 密码学Hash算法 什么是密码学Hash算法 密码学Hash算法是一个非常重要,而且常见的算法,是计算机密码学中的核心组成部分。密码学Hash算法是指将任何长度的二进制值映射成较短的固定长度二进制值的算法,这个较短的固定长度二进制值就是Hash值。先说一下:这个表述其实不是特别严谨,“任意长度”其实应该是 “算法允许长度范围内的任意长度”,因为有些密码学Hash算法是有输入长度限制的。既然很长的输入可以变成很短的输出,这就像我们写文章之后,需要写一个摘要一样,所以Hash值很多时候也叫做 “消息摘要”, Java中计算密码学Hash值的基类更是直接叫 MessageDigest. 下面代码能够更直观一点,我们来看一些密码学Hash的例子: public static void main ( String [ ] args ) throws NoSuchAlgorithmException { System . out . println ( md5 ( "abcd" ) + " <- abcd" ) ; System . out . println (

在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互

久未见 提交于 2020-08-16 03:44:45
Android的私钥和信任证书的格式必须是BKS格式的,通过配置本地JDK,让keytool可以生成BKS格式的私钥和信任证书,java本身没有BouncyCastle密库 服务端: Java代码 public class SSLServer { private static final int SERVER_PORT = 50030; private static final String SERVER_KEY_PASSWORD = "123456"; private static final String SERVER_AGREEMENT = "TLS";//使用协议 private static final String SERVER_KEY_MANAGER = "SunX509";//密钥管理器 private static final String SERVER_KEY_KEYSTORE = "JKS";//密库,这里用的是Java自带密库 private static final String SERVER_KEYSTORE_PATH = "src/data/kserver.keystore";//密库路径 private SSLServerSocket serverSocket; public static void main(String[] args) {

JWT 使用加密算法RS256 非对称加密解密

孤人 提交于 2020-08-15 21:32:16
参考文档: https://gist.github.com/ssippe/8fc11c4d7e766e66f06db0431dba3f0a https://github.com/dvsekhvalnov/jose-jwt https://mac-blog.org.ua/dotnet-core-firebase-jwt/ 需要引用如下包: jose-jwt (version=2.5.0)、BouncyCastle 版本不限 加密和解密方式为:私钥加密、公钥解密 生成私钥、公钥可以利用openssl工具、也可以通过在线上工具生成 私钥: -----BEGIN PRIVATE KEY----- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMu4IDG1XU6a7bXo 4V1jSnbKk9Eum2WguAyq +maCRcP9JoHlE/ HmhPOjl91aN5gDHw3pgB7QMMkPkuyY 0aG9UiIo7PbBgjXsNBErprKa8G7GKhDN4B3m8jxEi1NLtCk2H8AEf8H / deGFXCde fjQx0NDEDcTbJ8STfbsqrLhOq2xzAgMBAAECgYEAg1kZMNOd8IOFxqb7P2o4ZbUh b1rciL8CS /

JS实现国密算法SM2加密,后端Java解密

孤人 提交于 2020-08-14 02:46:43
项目涉及保密传输,要求使用国密算法,一般遇到类似问题首先想到的就是使用非对称加密,后端生成密钥对,将公钥交给前端,前端用公钥加密数据,后端用私钥对数据解密。项目的复杂度在于国密的非对称加密算法SM2的Java及JS实现。 Java版比较好办,较新版本的bouncycastle就支持了SM2/SM3/SM4,麻烦在于JS版,找了很多都有问题,直到遇到了这个项目:https://github.com/Saberization/SM2,感谢作者。分别整理下前端后端的实现过程: 后端首先引入bouncycastle,Maven配置如下: <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.65</version> </dependency> 后端Java代码如下: //生成密钥对 X9ECParameters sm2ECParameters = GMNamedCurves.getByName("sm2p256v1"); ECDomainParameters domainParameters = new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(),

360路由器登录协议的分析和模拟实现

佐手、 提交于 2020-08-13 18:29:36
本文博客地址: http://blog.csdn.net/qq1084283172/article/details/78878057 一、360路由器登录协议分析的工具配置 1. 路由器型号:360路由器P2 2. 浏览器:火狐浏览器 3. 抓包分析工具:Burp Suite 和 Wireshark 二、360路由器登录协议的分析 通过对360路由器 P2的包装信息进行查看,发现360路由器P2的web登录页面的ip地址为 192.168.0.1 端口为 80 ,在进行路由器登录协议分析之前,先自己尝试使用浏览器进行路由器登录页面的测试,比如,输入错误的路由器登录密码和输入正确的路由器登录密码,看看路由器登录页面的错误提示,方便后面对路由器的登录web页面的分析,熟悉和了解一下路由器web管理登录的流程,然后再去分析路由器的登录协议,在进行路由器登录协议分析的时候,通过wifi网络或者网线将电脑或者手机连接到路由器设备,登录路由器的web控制界面,然后将 路由器的web管理页面的Html网页全部保存下来 ,用以接下来路由器登录协议的分析和模拟,还有一个地方需要注意,对于路由器的登录管理,PC的web登录管理,Android或者iOS的web登录管理,Android或者iOS的App管理登录的协议可能是不同也可能都是相同的