摘要:密钥库是一个存放加密密钥和证书的存储设施,它们经常用于SSL通信来标明服务器和客户机的身份,本文所列的为Java密钥库中的PKCS12和JCEKS类型。...Java中不同类型的密钥库包含:PrivateKey、SecretKey、JKS、PKCS12、JCEKS等。其中JKS的详细介绍可参考《Java不同密钥库类型之JKS》。...本文所讲诉的为PKCS12和JCEKS的用法。 以下为译文: JCEKS JCEKS是Java平台的一个密钥库格式,将密钥存储在密钥库中以防止加密密钥的暴露。...其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区。注意,PKCS12的密钥库保护密码同时也用于保护Key。...创建PKCS12密钥库 在把一个条目存入PKCS12之前必须先加载密钥库,这意味着我们必须首先创建一个密钥库。
开发人员通常需要将PFX文件转换为某些不同的格式,如PEM或JKS,以便可以为使用SSL通信的独立Java客户端或WebLogic Server使用 在Security编程中,有几种典型的密码交换信息文件格式...其中,我介绍如何从p12/pfx文件中提取密钥对及其长度: 1,首先,读取pfx/p12文件(需要提供保护密码) 2,通过别名(Alias,注意,所有证书中的信息项都是通过Alias来提取的)提取你想要分析的证书链...=”+keyPairCert.getPublicKey().getAlgorithm()); System.out.println(“证书密钥长度=”+iKeySize); 提取了他所需要的信息。...” ); } keyStore = KeyStore.getInstance( ” PKCS12 ” , ” BC ” ); } catch (KeyStoreException ex) { throw...= ” + keyPairCert.getPublicKey().getAlgorithm()); System.out.println( ” 证书密钥长度= ” + iKeySize); } catch
x509Certs[0]; int iKeySize = X509CertUtil.getCertificateKeyLength(keyPairCert); System.out.println(“证书密钥算法...=”+keyPairCert.getPublicKey().getAlgorithm()); System.out.println(“证书密钥长度=”+iKeySize); 提取了他所需要的信息。...PKCS #12, BKS and UBER if (Security.getProvider( ” BC ” ) == null ) { throw new Exception( ” 不能Load入BouncyCastle...” ); } keyStore = KeyStore.getInstance( ” PKCS12 ” , ” BC ” ); } catch (KeyStoreException ex) { throw...= ” + keyPairCert.getPublicKey().getAlgorithm()); System.out.println( ” 证书密钥长度= ” + iKeySize); } catch
ECC(椭圆曲线密码学)是一种新型的公钥密码体制,相比传统的RSA算法,在相同安全性要求下,ECC所需的密钥长度更短,运算效率更高,因此在现代密码学领域得到了广泛应用。 二、ECC算法原理 2.1....短密钥长度:ECC使用较短的密钥长度就可以达到与其他公钥密码体制相当的安全性。例如,256位的ECC密钥长度可以提供与3072位RSA密钥相当的安全性。...在Java中使用ECC(椭圆曲线密码学)进行加解密通常涉及密钥对的生成、加密和解密过程。...对于加密大量数据,通常使用对称加密算法(如AES),而ECC可用于安全地交换这些对称密钥。 下面代码使用Java的BouncyCastle库进行ECC密钥对生成、加密和解密的简单示例。...总结 ECC(椭圆曲线密码学)作为一种新型的公钥密码体制,在安全性、密钥长度和运算效率方面具有显著优势。
Password 是用来生成密钥的原文密码。 Salt 是一个加密用的盐值。 c 是进行重复计算的次数。 dkLen 是期望得到的密钥的长度。 DK 是最后产生的密钥。...它的算法是基于某个哈希散列函数(主要是 SHA 系列和 MD 系列),以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC 算法与其他哈希散列算法最大区别就是需要有密钥。...实现 HmacSHA384 384 BouncyCastle 实现 HmacSHA512 512 JAVA6 实现 HmacMD2 128 BouncyCastle 实现 HmacMD4 128...BouncyCastle 实现 HmacSHA224 224 BouncyCastle 实现 HMAC 的密钥可以是任何长度,如果密钥的长度超过了摘要算法信息分组的长度,则首先使用摘要算法计算密钥的摘要作为新的密钥...一般不建议使用太短的密钥,因为密钥的长度与安全强度是相关的。通常选取密钥长度不小于所选用摘要算法输出的信息摘要的长度。
) / DSA-1024 / EC-256; keypass: 密钥密码建议最好与storepass一致 keystore: 密钥库的名称默认在当前目录创建证书库 storetype: 证书库类型可选JKS...(JDK8)、PKCS12(JDK9) storepass: 证书库密码(私钥的密码)最好与keypass 一致 sigalg: 签名算法,当keyalg=RSA时有MD5withRSA、SHA1withRSA...pkcs12 输入源密钥库口令: 已成功导入别名 www.weiyigeek.top 的条目。...#2.密钥库中的条目查询 $keytool -list -v -keystore "server.jks" 输入密钥库口令: 密钥库类型: PKCS12 密钥库提供方: SUN 您的密钥库包含 1 个条目...描述:所谓JKS(Java Key Store)就是利用Java Keytool 工具生成的Keystore文件,JKS文件由公钥和密钥构成,其中的公钥就是我们所说的证书,即cer为后缀的文件,而私钥就是密钥
前言 Keytool是一个Java数据证书的管理工具 , 在keystore里,包含两种数据: 密钥实体(Key entity):即密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)...(产生的各类信息将不在.keystore文件中) keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA)) validity 指定创建的证书有效期多少天 keysize 指定密钥长度...storepass 指定密钥库的密码(获取keystore信息所需的密码) keypass 指定别名条目的密码(私钥的密码) dname 指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称...-storepass 密码 file 参数指定导出到文件的文件名 delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore...密钥长度(DSA算法对应的默认算法是sha1withDSA,不支持2048长度,此时需指定RSA) validity 有效期 keystore 指定keystore文件储存位置 设置密钥口令,及证书信息
;importorg.bouncycastle.cms.CMSSignedData;importorg.bouncycastle.cms.CMSSignedDataGenerator;importorg.bouncycastle.cms.CMSTypedData...{private String ksType = “PKCS12”;/*** 生成数字签名 *@paramsrcMsg 源信息 *@paramcharSet 字符编码 *@paramcertPath...证书路径 *@paramcertPwd 证书密码 *@return */ public byte[] signMessage(String srcMsg, String charSet, String...String charSet) throwsException { CertificateFactory certificatefactory; X509Certificate cert;//使用公钥对对称密钥进行加密...System.out.println(rslt);returnrslt; }/*** 解密数据 *@paramencode 加密后的密文 *@paramcertPath 证书路径 *@paramcertPwd 证书密码
0x02:数据加密标准(Data Encryption Standard,简称DES) Java标准实现情况: 密钥长度:56 默认密钥长度:56 工作模式:ECB、CBC、PCBC、CTR、CTS、CFB...Java标准实现情况: 密钥长度:112、168 默认密钥长度:168 工作模式:ECB、CBC、PCBC、CTR、CTS、CFB、CFB8 到 128、OFB、OFB8 到 128 填充方式:NoPadding...Java标准实现情况: 密钥长度:128、192、256 (256位密钥需要获得无政策限制权限文件,正常下载的JDK无法支持256位加密) 默认密钥长度:128 工作模式:ECB、CBC、PCBC、CTR...密钥长度:112、168 默认密钥长度: 168 工作模式:CBC 填充方式:PKCS6Padding 备注: java7实现 PBEWithSHA1AndDESede...密钥长度:112、168 默认密钥长度: 168 工作模式:CBC 填充方式:PKCS7Padding 备注: java8实现 PBEWithSHA1AndRC2
请自行指定一个邮箱) 按下回车跳过注释 输入o确定 输入私钥密码,后续若想修改密钥或解密需要用到该密码,然后回车确定 再次输入密码,回车确定 移动鼠标来提供随机数以生成密钥 GPG生成密钥的最后一步需要采集随机数...后续加解密时使用到密钥库文件其实也会通过keyId来获取对应的密钥对。 导出PGP密钥 -a即--armor,表示以ASCII格式输出,即Base64串。...实现PGP加解密 Java使用openpgp库来实现,pom依赖: org.bouncycastle bcprov-jdk15on...* * @param keySize 生成多少位的密钥,如2048 * @param passPhrase 私钥密码,可为空 * @param identity...参考链接 gpg 密钥生成、导入、导出、自动输入密码 关于PGP & GPG文件加密有这篇就够了 运行gpg –gen-key生成密钥时卡住在We need to generate a lot of random
它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。 非对称密钥加密: 又称公钥密钥加密。指的是加、解密使用不同的密钥,一把作为公开的公钥,另一把作为私钥保存。...文件通常具有扩展名,例如.pkcs12 .pfx .p12。 密钥库和私钥用相同密码进行保护 JKS 格式 JKS是java用来存储密钥的容器。...在Java 8之前,这些文件的默认格式为JKS(android .keystore 也是jsk格式的证书)。 从Java 9开始,默认的密钥库格式为PKCS12。...JKS是二进制格式,同时包含证书和私钥,一般有密码保护,只能存储非对称密钥对(私钥 + x509公钥证书)。...密钥库和私钥用不同的密码进行保护 JKS和PKCS12之间的最大区别是JKS是Java专用的格式,而PKCS12是存储加密的私钥和证书的标准化且与语言无关的方式。
密钥管理: PGP 使用密钥对来管理加密和解密过程。每个用户都有一个公钥和一个私钥。公钥用于加密消息,私钥用于解密消息。这些密钥对可以通过密钥服务器或密钥交换方式获取。...密钥管理: 用户可以通过密钥服务器或直接交换密钥的方式来管理和共享公钥。 工作流程 密钥交换: 发送方和接收方需要交换公钥。这可以通过密钥服务器、直接交换或其他安全渠道完成。...代码实现 在Java中完全实现PGP协议需要使用第三方库,因为PGP是一个复杂的加密协议。常用的库之一是Bouncy Castle. pom依赖 <?...) { Security.addProvider(new BouncyCastleProvider()); } } /** * 私钥密码...param outputStream 输出流,要写入其中的数据 * @param in 要读取数据的输入流 * @param length 要读取的数据长度
KonaPKIX,它实现了国密证书的解析及其证书链验证,并可加载和创建包含国密证书的密钥库(Key Store)文件。...KonaPKIX基于JDK的Public Key Infrastructure(PKI)特性实现了对使用国密算法(SM2椭圆曲线和SM3withSM2签名算法)的X.509证书的解析,证书链验证,以及密钥库文件的读取与创建...为密钥库文件支持了标准的PKCS#12与JDK独有的JKS这两种格式。...需要了解的是,当使用ECDHE密码套件时,客户端也必须提供双证书,这是SM2密钥交换算法所要求的,也是与TLS协议中的ECDHE密码套件的一个明显区别。...在不久的未来,该套件将会完全摒弃BouncyCastle。
keytool 简介 keytool生成3DES密钥 C:\Program Files\Java\jre1.8.0_161\bin>keytool -genseckey -alias test-TDES...> 的密钥口令 (如果和密钥库口令相同, 按回车): Warning: JCEKS 密钥库使用专用格式。...查看密钥库: C:\Program Files\Java\jre1.8.0_161\bin>keytool -list -v -storetype jceks -keystore key-TDES.store...输入密钥库口令: 密钥库类型: JCEKS 密钥库提供方: SunJCE 您的密钥库包含 1 个条目 别名: test-tdes 创建日期: 2018-5-22 条目类型: SecretKeyEntry...注意事项: -keyalg:DESede对应的为168bit(有效)长度密钥,不是192;DES对应的为56bit(有效)长度密钥,不是64。
概述 加密与安全_探索对称加密算法中我们提到AES加密密钥长度是固定的128/192/256位,而不是我们用WinZip/WinRAR那样,随便输入几位都可以。...这是因为对称加密算法决定了口令必须是固定长度,然后对明文进行分块加密。又因为安全需求,口令长度往往都是128位以上,即至少16个字符。...用户输入的口令往往不能直接作为AES的密钥进行加密,因为它们的长度通常不符合AES密钥的要求,而且可能存在规律性,容易受到字典攻击等安全威胁。...PBE 算法 ( Password Based Encryption) PBE算法(Password-Based Encryption)是一种安全的密码基础加密算法,用于将用户输入的口令转换为符合要求的密钥...通俗的可以理解为下面的函数: key = generate(userPassword, secureRandomPassword); 以AES密钥生成为例,用户只需输入一个口令,而不需要担心口令的长度和复杂度是否符合要求
开发,它可以使用128位,192位或者256位的密钥长度,使得它比密钥长度为56位的DES更健壮可靠。...Rijndael被设计用来支持更多的密钥长度,然而除了上述3种密钥长度,其他密钥长度并没有被AES采用。...-CFB128、OFB、OFB8-OFB128. (2) 填充模式 NoPadding、PKCS5Padding、ISO10126Padding (3) 密钥长度 默认密钥长度128,可选 128...、(192、256 需要获取无政策限制许可) 密钥长度 (4) 算法实现 package lzf.cipher.jdk; import java.nio.charset.Charset; import...; import org.bouncycastle.util.encoders.Hex; /** * @author Java小工匠 */ public class BCAesUtils {
,是国家密码管理局于2012年发布的。...SMS4算法是在国内广泛使用的WAPI无线网络标准中使用的加密算法,是一种32轮的迭代非平衡Feistel结构的分组加密算法,其密钥长度和分组长度均为128。...SMS4算法的加解密过程中使用的算法是完全相同的,唯一不同点在于该算法的解密密钥是由它的加密密钥进行逆序变换后得到的。...java.security.SecureRandom; import java.security.Security; import java.util.Arrays; import javax.crypto.Cipher...,会随着被加密字符串长度的变化而变化 * @param hexKey 16进制密钥(忽略大小写) * @param paramStr 待加密字符串 * @return 返回16进制的加密字符串 * @throws
BouncyCastle是一款开源的密码包,其中包含了大量的密码算法,使用BouncyCastle的目的就是为了扩充算法支持 下载地址最新加密组件包 http://www.bouncycastle.org...的使用方式 2.1、配置方式 通过配置JRE环境,使其作为提供者提供相应的算法支持,在代码层面只需要指定要扩展的算法名称 (1) 修改 D:\InstallSoftHere\Java\jdk1.8.0..._121\jre\lib\security目录下的java.security文件 security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider...(2) 将文件导入D:\InstallSoftHere\Java\jdk1.8.0_121\jre\lib\ext目录下 (3) 刚才上面修改了安装目录下的jdk文件夹里的内容,接下来对与jdk同目录下的...; import org.bouncycastle.jce.provider.BouncyCastleProvider; (3) 在初始化密钥工厂、密钥生成器等引擎前调用如下代码: //加入BouncyCastleProvider
1、什么是ElGamal ElGamal算法,是一种较为常见的加密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系。...在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K,在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,而其逆运算指数运算可以应用平方-乘的方法有效地计算...; import javax.crypto.Cipher; import javax.crypto.spec.DHParameterSpec; import org.bouncycastle.jce.provider.BouncyCastleProvider...; import org.bouncycastle.util.encoders.Hex; /** * @author Java小工匠 */ public class BCElGamalUtils...String ELGAMAL = "ElGamal"; public static KeyPair initKey() { try { // 加入对BouncyCastle
概述 在某些情况下,Java标准库提供的哈希算法可能无法满足特定需求。...方法二:使用第三方库 借助第三方库,我们可以方便地使用各种不同的哈希算法和加密算法,而无需自行实现。BouncyCastle就是一个提供了丰富的哈希算法和加密算法的第三方库。...BouncyCastle 官网 https://www.bouncycastle.org/ BouncyCastle简介 Bouncy Castle 是一个面向密码学的开源库,提供了丰富的密码学算法实现...跨平台支持:Bouncy Castle 可以在多种平台上运行,包括 Java 平台、.NET 平台以及 Android 平台,使其成为一个跨平台的密码学库。...总的来说,Bouncy Castle 是一个强大而灵活的密码学库,提供了丰富的密码学功能和可靠的安全性保护,适用于各种安全应用和加密通信协议的开发。
领取专属 10元无门槛券
手把手带您无忧上云