当前位置: 首页 > news >正文

网页制作和网站开发实验报告手机wordpress的文章分类

网页制作和网站开发实验报告,手机wordpress的文章分类,建设制作外贸网站的公司,公司简介介绍文章目录 一.Java安全体系结构二.JCA和JCE三.CSP(加密服务提供程序)与Engine类1.CSP2.Engine类如何使用引擎类 四.查看当前JDK支持的算法服务提供商(Provider)五.BouncyCastle是什么六.如何使用BouncyCastle#xff1f;七.bouncycastle实现ED25519工具类 一.Java安全体系结构 … 文章目录 一.Java安全体系结构二.JCA和JCE三.CSP(加密服务提供程序)与Engine类1.CSP2.Engine类如何使用引擎类 四.查看当前JDK支持的算法服务提供商(Provider)五.BouncyCastle是什么六.如何使用BouncyCastle七.bouncycastle实现ED25519工具类 一.Java安全体系结构 总共分为4个部分 JCA Java Cryptography Architecture Java加密体系结构提供了基本的加密框架包括证书、数字签名、消息摘要和密钥对产生器等。它允许开发者通过Java API来访问和操作加密相关的功能。JCE Java Cryptography Extension Java加密扩展包JCE在JCA的基础上作了扩展 提供了各种加密算法、 消息摘要算法散列算法、哈希算法和密钥管理等功能。JCE的实现主要在javax.crypto包 及其子包 中JSSE Java Secure Sockets Extension Java安全套接字扩展包JSSE提供了基于SSL Secure Sockets Layer安全套接字层 的加密功能。。这有助于确保在网络传输过程中的信息安全防止数据被窃取或篡改。JAAS Java Authentication and Authentication Service Java认证和授权服务用于Java应用程序的认证和授权。它允许程序根据用户的身份和权限来限制对某些资源的访问从而增强了应用程序的安全性。 二.JCA和JCE JCA: Java密码体系结构 Java Cryptography Architecture JCEJava Cryptography Extension在早期JDK版本中由于受美国的密码出口条例约束Java中涉及加解密功能的API被限制出口所以Java中安全组件被分成了2部分: 不含加密功能的JCAJava Cryptography Architecture 和含加密功能的JCEJava Cryptography Extension。 现在JCE已经捆绑在JDK中所以这里JCE是JCA的一部分 JCA包含一个提供者【Provider】体系结构和一组用于数字签名消息摘要哈希证书和证书验证加密对称/非对称块/流密码密钥生成管理 和 安全随机数生成等等的API。 JCA包含两个组件 定义和支持Provider为其提供实现的加密服务的框架。 这个框架包含了诸如java.securityjavax.cryptojavax.crypto.spec和javax.crypto.interfaces等软件包。 JCA相关代码位于JDK的rt.jar中的java.security包及其子包中。 JCE相关代码位于JDK的jce.jar中的javax.crypto包及其子包中。 java.security.Provider类是所有加密与安全算法的父类。 SunSunRsaSignSunJCE等实际提供者的具体的加密实现。 通过JCA统一的、可扩展的一套用于实现加密服务的基础功能基础API打包成一个Provider服务 安全提供者也就是一个实现JCA标准的jar包 可以动态地加载到Java运行环境中。 而开发者在使用只需根据JCA框架提供的统一接口来调用各种第三方服务商加密算法、密钥管理等功能而无需关心底层的实现细节 三.CSP(加密服务提供程序)与Engine类 1.CSP 在Java中并没有直接称为Cryptographic Service Provider (CSP)的官方组件或术语。 然而Java有一个类似的机制即Java Cryptography Extension (JCE)中的Provider机制它允许第三方实现并集成加密服务。 java.security.Provider是所有安全算法提供实现的父类。 每个CSP都包含这个类的一个实例它包含了提供者的名字并列出了它实现的所有安全服务/算法。每个Provider可以包含多种类型的Engine类这些Engine类是实现特定加密算法或功能的基类。这些基类定义了算法的通用接口而具体的实现则由不同的Provider提供。 2.Engine类 Engine类为特定类型的密码服务提供的统一接口不依赖于特定的密码算法或提供者。 加密数字签名消息摘要等密钥和算法参数密钥库或证书 消息摘要引擎Message Digest Engine 作用用于数据完整性校验。它将输入的任意长度消息进行哈希运算生成一个固定长度的摘要值。常见算法包括MD5、SHA-1等。使用场景在保证消息完整的前提下即使消息长度非常大也可以通过摘要值的校验实现快速和安全的数据校验。java.security.MessageDigest 数字签名引擎Digital Signature Engine 作用用于验证数据真实性和完整性。使用场景常用于电子商务、在线金融等领域用于保证交易的安全性。java.security.Signature 对称加密引擎 使用相同的密钥进行加密和解密数据。javax.crypto.Cipher类来进行对称加密。常见算法包括DES、AES和Blowfish等。 非对称加密引擎 使用一对密钥公钥和私钥进行加密和解密。发送方使用接收方的公钥加密数据接收方使用自己的私钥解密数据。使用javax.crypto.Cipher类进行非对称加密操作。 消息认证码Message Authentication CodeMAC引擎 Mac是一个带密钥的hash算法首先使用密钥初始化后生成散列值以保护消息的完整性。java.crypto.Mac 密钥生成器 KeyGenerator用于生成指定算法的对称密钥。KeyPairGenerator用于生成一对适用于指定算法的非对称加密算法的密钥对。 KeyFactory 用于从某种类型的密钥规范key specification中导出密钥的引擎。 SecretKeyFactory 用于从原始密钥序列化数据中导出密钥的引擎。 SecureRandom 用于生成随机或伪随机数字。 如何使用引擎类 1.使用KeyPairGenerator引擎类生成公钥和私钥的密钥对 要使用KeyPairGenerator生成密钥对你需要首先获取对应算法的实例然后通过调用genKeyPair()方法来生成密钥对。 public class KeyPairGeneratorExample {public static void main(String[] args) {try {// 创建一个KeyPairGenerator实例指定密钥对的算法为RSAKeyPairGenerator keyPairGenerator KeyPairGenerator.getInstance(RSA);// 初始化KeyPairGenerator指定密钥长度keyPairGenerator.initialize(2048); // 2048位密钥长度// 生成密钥对KeyPair keyPair keyPairGenerator.genKeyPair();// 获取公钥和私钥PublicKey publicKey keyPair.getPublic();PrivateKey privateKey keyPair.getPrivate();// 打印公钥和私钥信息在实际应用中不应该直接打印或输出私钥System.out.println(Public Key: publicKey);System.out.println(Private Key: privateKey);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}} }2.使用Mac引擎类生成消息摘要算法 使用Mac算法先获取一个Mac实例指定所使用的算法如HmacSHA256然后提供密钥和要计算MAC的消息。 public class MacExample {public static void main(String[] args) {try {// 创建一个Mac实例指定算法为HmacSHA256Mac mac Mac.getInstance(HmacSHA256);// 初始化Mac实例使用指定的密钥byte[] keyBytes mySecretKey.getBytes(StandardCharsets.UTF_8);SecretKeySpec secretKeySpec new SecretKeySpec(keyBytes, HmacSHA256);mac.init(secretKeySpec);// 提供要计算MAC的消息byte[] message Hello, World!.getBytes(StandardCharsets.UTF_8);// 计算MAC值byte[] macBytes mac.doFinal(message);// 打印MAC值通常以十六进制形式表示System.out.println(MAC: bytesToHex(macBytes));} catch (NoSuchAlgorithmException | InvalidKeyException e) {e.printStackTrace();}}// 辅助方法将字节数组转换为十六进制字符串private static String bytesToHex(byte[] hash) {StringBuilder hexString new StringBuilder(2 * hash.length);for (int i 0; i hash.length; i) {String hex Integer.toHexString(0xff hash[i]);if (hex.length() 1) hexString.append(0);hexString.append(hex);}return hexString.toString();} } 四.查看当前JDK支持的算法服务提供商(Provider) 当前版本jdk1.8 public class JavaProividerTest {public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgorithmException {System.out.println(printAllSecurityProvidersInMdTable());}// 输出MarkDown格式的表格具体内容见下表public static String printAllSecurityProvidersInMdTable() {StringBuilder stringBuilder new StringBuilder();stringBuilder.append(Provider Name供应商名称|Provider Version供应商版本|Algorithm Type算法类型|Algorithm Name算法名称\r\n);stringBuilder.append(|:-|:-|:-|:-\r\n);MapString, MapString, String providers2Algorithms Arrays.stream(Security.getProviders()).collect(Collectors.toMap(provider - provider.getName() provider.getVersion(), provider - provider.getServices().stream().collect(Collectors.toMap(service - service.getType(), service - service.getAlgorithm(), (algorithm1, algorithm2) - algorithm1 algorithm2))));providers2Algorithms.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).forEachOrdered(entryProvider - {String[] provider entryProvider.getKey().split();MapString, String algoType2AlgoName entryProvider.getValue();int[] rowNumber {0};algoType2AlgoName.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).forEachOrdered(entryAlgorithm - {StringBuilder algorithmCellStr new StringBuilder();int[] numberOfAlgorithm {1};Arrays.stream(entryAlgorithm.getValue().split()).sorted(String::compareTo).forEachOrdered(algorithm - {algorithmCellStr.append(algorithm);if (0 numberOfAlgorithm[0] % 1) {algorithmCellStr.append(br);}numberOfAlgorithm[0];});stringBuilder.append(String.format(|%s|%s|%s|%s\r\n, 0 rowNumber[0] ? provider[0] : , 0 rowNumber[0] ? provider[1] : , entryAlgorithm.getKey(), algorithmCellStr.toString()));rowNumber[0];});});return stringBuilder.toString();}// 输出纯文本格式public static void printAllSecurityProviders() {for (Provider provider : Security.getProviders()) {System.out.println(Provider: provider.getName() (ver provider.getVersion() ));System.out.print( Algorithms: );ArrayListString algos new ArrayListString();for (Provider.Service service : provider.getServices()) {algos.add(String.format(%s (%s), service.getAlgorithm(), service.getType()));}java.util.Collections.sort(algos);String algorsStr algos.toString();algorsStr algorsStr.substring(1, algorsStr.length() - 1);System.out.println(algorsStr);System.out.println();}} }当前JDK版本为1.8每个JDK安装都默认安装并配置了一个或多个provider包。 public static void main(String[] args) {System.out.println(-------列出加密服务提供者-----);Provider[] pro Security.getProviders();for (Provider p : pro) {System.out.println(Provider: p.getName() - version: p.getVersion());System.out.println(p.getInfo());}System.out.println();System.out.println(-------列出系统支持的消息摘要算法散列算法、哈希算法);for (String s : Security.getAlgorithms(MessageDigest)) {System.out.println(s);}System.out.println(-------列出系统支持的生成公钥和私钥对的算法);for (String s : Security.getAlgorithms(KeyPairGenerator)) {System.out.println(s);}}可以看到默认情况下java1.8已经支持市面上绝大多数常见算法 有一些算法JDK中的Provider并没有提供用户可以静态或动态添加其他provider。 除了jdk自带的加解密实现外另外2个主要的加解密算法的提供者为bouncy castle和apache common codec它们提供了额外的算法以及在JDK基础上提高了易用性。其中bouncy castle就提供了Provider的扩展补充了JDK没有实现的一些算法。 下面我们就以bouncy castle为例看看如何添加新的Provider扩展: 五.BouncyCastle是什么 BouncyCastle轻量级密码术包是一种用于 Java 平台的开源的轻量级加密包Bouncycstle 包含了大量哈希算法和加密算法包括Java标准库没有的一些算法如非对称加密算法ECDSA(椭圆曲线数字签名算法)并提供JCE 1.2.1的实现、RipeMD160哈希算法、椭圆曲线数字签名算法分支ED25519 六.如何使用BouncyCastle maven中央仓库 引入bouncycastle依赖 !-- dependency--!-- groupIdorg.bouncycastle/groupId--!-- artifactIdbcprov-jdk18on/artifactId--!-- version1.77/version--!-- /dependency--dependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15on/artifactIdversion1.70/version/dependencyJava标准库的java.security包提供了一种标准机制允许第三方提供商无缝接入。使用BouncyCastle提供的ED25519算法需要先把BouncyCastle注册一下 加入一行代码在java应用程序启动注册BouncyCastle提供的所有哈希算法和加密算法 static {//注册只需要在启动时进行一次后续就可以使用BouncyCastle提供的所有哈希算法和加密算法。Security.addProvider(new BouncyCastleProvider());}执行代码 可以看到bouncycastle作为加密服务提供者已经注册到java程序中 系统支持的哈希算法和非对称加密算法也多出了很多 -------列出系统支持的消息摘要算法(散列算法、哈希算法) SHA-1 SHA-384 HARAKA-256 SKEIN-512-256 SKEIN-1024-384 BLAKE2B-160 SHA KECCAK-288 WHIRLPOOL SKEIN-512-384 SHA-224 SM3 BLAKE2B-512 OID.1.0.10118.3.0.55 GOST3411-2012-512 KECCAK-256 SKEIN-512-128 BLAKE2B-384 SHAKE256-512 SKEIN-256-160 DSTU7564-256 SHA-256 BLAKE2S-224 SHA3-256 KECCAK-384 SKEIN-256-128 DSTU7564-384 HARAKA-512 SHAKE128-256 KECCAK-224 SKEIN-512-512 SKEIN-1024-512 SKEIN-512-160 GOST3411 BLAKE2B-256 SKEIN-1024-1024 SHA3-384 BLAKE2S-256 SHA-512/224 TIGER RIPEMD256 SKEIN-256-256 SHA3-224 SHA3-512 RIPEMD320 RIPEMD160 GOST3411-2012-256 KECCAK-512 SKEIN-512-224 BLAKE2S-160 SHA-512/256 MD2 RIPEMD128 MD4 SHA-512 SKEIN-256-224 MD5 BLAKE2S-128 DSTU7564-512 -------列出系统支持的生成公钥和私钥对的算法(非对称加密算法) ECDH DH DIFFIEHELLMAN ECGOST3410-2012 X448 ECDHC ED25519 GOST3410 ELGAMAL DSA ED448 DSTU4145 XDH EC ECDSA RSA X25519 ECGOST3410 ECIES ECDHWITHSHA1KDF RSASSA-PSS EDDSA ECMQV七.bouncycastle实现ED25519工具类 Ed25519是椭圆曲线数字签名算法ECDSA的一个重要分支 特点: 安全性: Ed25519相对于传统的ECDSA有着更好的安全性。效率: 它的运行效率非常高适合在各种设备上执行包括移动设备。短签名: 它产生的签名非常短只有64字节。 可用于区块链签名。签名过程不依赖随机数生成器不依赖哈希函数的抗碰撞性没有时间通道攻击的问题。 import org.bouncycastle.crypto.AsymmetricCipherKeyPair; import org.bouncycastle.crypto.generators.Ed25519KeyPairGenerator; import org.bouncycastle.crypto.params.Ed25519KeyGenerationParameters; import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters; import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters; import org.bouncycastle.crypto.signers.Ed25519Signer; import org.bouncycastle.jce.provider.BouncyCastleProvider;import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.security.Security; import java.util.Base64;/*** BouncyCastle是一个提供了很多哈希算法和加密算法的第三方库。它提供了Java标准库没有的一些算法例如RipeMD160哈希算法。其它第三方库还有Commons Codec等。* 你可以使用Bouncy Castle的API来生成密钥对然后使用私钥对消息进行签名使用公钥来验证签名。*/ public class Ed25519Utils {static {//注册只需要在启动时进行一次后续就可以使用BouncyCastle提供的所有哈希算法和加密算法。Security.addProvider(new BouncyCastleProvider());}//1.初始化密钥对private static AsymmetricCipherKeyPair KEY_PAIR generateKeyPair();//2.创建一个私钥和私钥private static Ed25519PrivateKeyParameters PRIVATE_KEY getPrivateKey(KEY_PAIR);private static Ed25519PublicKeyParameters PUBLIC_KEY getPublicKey(KEY_PAIR);/*** 初始化上下文*/public static void initContext() {KEY_PAIR generateKeyPair();PRIVATE_KEY getPrivateKey(KEY_PAIR);PUBLIC_KEY getPublicKey(KEY_PAIR);}/*** 获取私钥对消息签名的Base64格式字符串** param message* return*/public static String getPrivateKeySignMessageBase64(String message) {byte[] messageBytes getBytes(message);System.out.println(签名消息: message \n);//使用私钥对消息进行签名,然后将私钥签名编码为Base64格式,最后将base64私钥签名进行url编码byte[] privateSignatureByte privateKeySign(PRIVATE_KEY, messageBytes);return base64EncodeToString(privateSignatureByte);}/*** 使用公钥来验证签名。** param message 签名消息* param privateBase64Sign 私钥对消息签名的Base64格式字符串*/public static boolean publicKeyCheckSign(String message, String privateBase64Sign) {//初始化签名器Ed25519Signer verifier new Ed25519Signer();verifier.init(false, PUBLIC_KEY);//执行验签verifier.update(getBytes(message), 0, getBytes(message).length);//验签结果return verifier.verifySignature(Base64.getDecoder().decode(privateBase64Sign));}/*** 使用私钥对消息进行签名** param privateKey 私钥* param messageBytes 消息 accountzichangaibantest1163.comcaptcha111111codeWrPQctXMOupub_key publicBase64Str type2;* return 私钥签名后的base编码消息*/public static byte[] privateKeySign(Ed25519PrivateKeyParameters privateKey, byte[] messageBytes) {//初始化签名器Ed25519Signer signer new Ed25519Signer();signer.init(true, privateKey);// 执行签名signer.update(messageBytes, 0, messageBytes.length);//7.将私钥签名编码为Base64格式return signer.generateSignature();}private static AsymmetricCipherKeyPair generateKeyPair() {//1.创建ed25519密钥生成器Ed25519KeyPairGenerator keyPairGenerator new Ed25519KeyPairGenerator();//密钥生成参数需要指定随机种子SecureRandom secureRandom new SecureRandom();Ed25519KeyGenerationParameters keyGenerationParameters new Ed25519KeyGenerationParameters(secureRandom);keyPairGenerator.init(keyGenerationParameters);//2.生成公私钥对return keyPairGenerator.generateKeyPair();}/*** 获取私钥对象** param keyPair* return*/private static Ed25519PrivateKeyParameters getPrivateKey(AsymmetricCipherKeyPair keyPair) {return (Ed25519PrivateKeyParameters) keyPair.getPrivate();}/*** 获取公钥对象** param keyPair* return*/private static Ed25519PublicKeyParameters getPublicKey(AsymmetricCipherKeyPair keyPair) {return (Ed25519PublicKeyParameters) keyPair.getPublic();}/*** 获取私钥字节** param privateKey* return*/private static byte[] getPrivateByte(Ed25519PrivateKeyParameters privateKey) {//序列化私钥return privateKey.getEncoded();}/*** 获取公钥字节** param publicKey* return*/private static byte[] getPublicByte(Ed25519PublicKeyParameters publicKey) {//序列化公钥return publicKey.getEncoded();}/*** 获取base64编码后字符串** param bytes* return 如/85uEv81XgrIbuHqnUMVRSrS8C/tr9jn0NBSv0wb1Dk 会携带/、之类特殊符号*/public static String base64EncodeToString(byte[] bytes) {return Base64.getEncoder().encodeToString(bytes);}/*** 获取私钥base64编码后字符串** param privateBase64Str 如/85uEv81XgrIbuHqnUMVRSrS8C/tr9jn0NBSv0wb1Dk 会携带/、之类特殊符号* return*/public static String urlEncodeStr(String privateBase64Str) {try {return URLEncoder.encode(privateBase64Str, UTF-8);} catch (UnsupportedEncodingException e) {e.printStackTrace();}return null;}public static byte[] getBytes(String str) {return str.getBytes(StandardCharsets.UTF_8);}/*** 获取base64编码公钥字符串** return*/public static String getBase64Public() {byte[] publicBytes getPublicByte(PUBLIC_KEY);return base64EncodeToString(publicBytes);}/*** 获取url编码后的 获取base64编码公钥字符串** return* throws*/public static String getBase64UrlEncodePublic() {return urlEncodeStr(getBase64Public());}/*** 获取base64编码私钥字符串** return*/public static String getBase64Private() {byte[] priavteBytes getPrivateByte(PRIVATE_KEY);return base64EncodeToString(priavteBytes);}/*** 获取url编码后的 获取base64编码私钥字符串** return* throws*/public static String getBase64UrlEncodePrivate() {return urlEncodeStr(getBase64Private());} } 测试代码 public static void main(String[] args) {for (int i 0; i 1; i) {Ed25519Utils.initContext();//1.将publicBytes编码为Base64格式,然后对Base64公钥进行url编码String publicBase64 Ed25519Utils.getBase64Public();String urlEncodedBase64Public Ed25519Utils.urlEncodeStr(publicBase64);System.out.println(base64公钥: publicBase64);System.out.println(URL编码后的base64公钥为 urlEncodedBase64Public \n);//2.将privateBytes编码为Base64格式,然后对Base64私钥进行url编码String privateBase64 Ed25519Utils.getBase64Private();String urlEncodedBase64Private Ed25519Utils.urlEncodeStr(privateBase64);System.out.println(base64私钥: privateBase64);System.out.println(URL编码后的base64私钥为 urlEncodedBase64Private \n);//3.拼接公钥到请求消息中同时序列化消息String message accountzichangaibantest1163.comcaptcha111111codeWrPQctXMOupub_keypublicKeytype2;// 需要签名的数据,根据key进行排序,然后序列化签名message message.replaceAll(publicKey, publicBase64);//4.使用私钥对消息进行签名,然后将私钥签名编码为Base64格式,最后将base64私钥签名进行url编码String privateBase64Sign Ed25519Utils.getPrivateKeySignMessageBase64(message);String urlEncodePrivateBase64Sign Ed25519Utils.urlEncodeStr(privateBase64Sign);System.out.println(bas4私钥签名消息为 privateBase64Sign);System.out.println(私钥签名消息 urlEncodePrivateBase64Sign \n);//5.使用公钥验证签名boolean isValid Ed25519Utils.publicKeyCheckSign(message, privateBase64Sign);System.out.println(验证私钥签名是否正确 i: isValid);System.out.println(----------------------------------------------------);System.out.println(----------------------------------------------------);}} } 执行结果 Provider NameProvider VersionAlgorithm TypeAlgorithm NameSUN1.8AlgorithmParameterGeneratorDSAAlgorithmParametersDSACertPathBuilderPKIXCertPathValidatorPKIXCertStoreCollectionLDAPcom.sun.security.IndexedCollectionCertificateFactoryX.509ConfigurationJavaLoginConfigKeyFactoryDSAKeyPairGeneratorDSAKeyStoreCaseExactJKSDKSJKSMessageDigestMD2MD5SHASHA-224SHA-256SHA-384SHA-512PolicyJavaPolicySecureRandomSHA1PRNGSignatureNONEwithDSASHA1withDSASHA224withDSASHA256withDSASunEC1.8AlgorithmParametersECKeyAgreementECDHKeyFactoryECKeyPairGeneratorECSignatureNONEwithECDSASHA1withECDSASHA224withECDSASHA256withECDSASHA384withECDSASHA512withECDSASunJCE1.8AlgorithmParameterGeneratorDiffieHellmanAlgorithmParametersAESBlowfishDESDESedeDiffieHellmanGCMOAEPPBEPBES2PBEWithHmacSHA1AndAES_128PBEWithHmacSHA1AndAES_256PBEWithHmacSHA224AndAES_128PBEWithHmacSHA224AndAES_256PBEWithHmacSHA256AndAES_128PBEWithHmacSHA256AndAES_256PBEWithHmacSHA384AndAES_128PBEWithHmacSHA384AndAES_256PBEWithHmacSHA512AndAES_128PBEWithHmacSHA512AndAES_256PBEWithMD5AndDESPBEWithMD5AndTripleDESPBEWithSHA1AndDESedePBEWithSHA1AndRC2_128PBEWithSHA1AndRC2_40PBEWithSHA1AndRC4_128PBEWithSHA1AndRC4_40RC2CipherAESAESWrapAESWrap_128AESWrap_192AESWrap_256AES_128/CBC/NoPaddingAES_128/CFB/NoPaddingAES_128/ECB/NoPaddingAES_128/GCM/NoPaddingAES_128/OFB/NoPaddingAES_192/CBC/NoPaddingAES_192/CFB/NoPaddingAES_192/ECB/NoPaddingAES_192/GCM/NoPaddingAES_192/OFB/NoPaddingAES_256/CBC/NoPaddingAES_256/CFB/NoPaddingAES_256/ECB/NoPaddingAES_256/GCM/NoPaddingAES_256/OFB/NoPaddingARCFOURBlowfishDESDESedeDESedeWrapPBEWithHmacSHA1AndAES_128PBEWithHmacSHA1AndAES_256PBEWithHmacSHA224AndAES_128PBEWithHmacSHA224AndAES_256PBEWithHmacSHA256AndAES_128PBEWithHmacSHA256AndAES_256PBEWithHmacSHA384AndAES_128PBEWithHmacSHA384AndAES_256PBEWithHmacSHA512AndAES_128PBEWithHmacSHA512AndAES_256PBEWithMD5AndDESPBEWithMD5AndTripleDESPBEWithSHA1AndDESedePBEWithSHA1AndRC2_128PBEWithSHA1AndRC2_40PBEWithSHA1AndRC4_128PBEWithSHA1AndRC4_40RC2RSAKeyAgreementDiffieHellmanKeyFactoryDiffieHellmanKeyGeneratorAESARCFOURBlowfishDESDESedeHmacMD5HmacSHA1HmacSHA224HmacSHA256HmacSHA384HmacSHA512RC2SunTls12PrfSunTlsKeyMaterialSunTlsMasterSecretSunTlsPrfSunTlsRsaPremasterSecretKeyPairGeneratorDiffieHellmanKeyStoreJCEKSMacHmacMD5HmacPBESHA1HmacSHA1HmacSHA224HmacSHA256HmacSHA384HmacSHA512PBEWithHmacSHA1PBEWithHmacSHA224PBEWithHmacSHA256PBEWithHmacSHA384PBEWithHmacSHA512SslMacMD5SslMacSHA1SecretKeyFactoryDESDESedePBEWithHmacSHA1AndAES_128PBEWithHmacSHA1AndAES_256PBEWithHmacSHA224AndAES_128PBEWithHmacSHA224AndAES_256PBEWithHmacSHA256AndAES_128PBEWithHmacSHA256AndAES_256PBEWithHmacSHA384AndAES_128PBEWithHmacSHA384AndAES_256PBEWithHmacSHA512AndAES_128PBEWithHmacSHA512AndAES_256PBEWithMD5AndDESPBEWithMD5AndTripleDESPBEWithSHA1AndDESedePBEWithSHA1AndRC2_128PBEWithSHA1AndRC2_40PBEWithSHA1AndRC4_128PBEWithSHA1AndRC4_40PBKDF2WithHmacSHA1PBKDF2WithHmacSHA224PBKDF2WithHmacSHA256PBKDF2WithHmacSHA384PBKDF2WithHmacSHA512SunJGSS1.8GssApiMechanism1.2.840.113554.1.2.21.3.6.1.5.5.2SunJSSE1.8KeyFactoryRSAKeyManagerFactoryNewSunX509SunX509KeyPairGeneratorRSAKeyStorePKCS12SSLContextDefaultTLSTLSv1TLSv1.1TLSv1.2SignatureMD2withRSAMD5andSHA1withRSAMD5withRSASHA1withRSATrustManagerFactoryPKIXSunX509SunMSCAPI1.8CipherRSARSA/ECB/PKCS1PaddingKeyPairGeneratorRSAKeyStoreWindows-MYWindows-ROOTSecureRandomWindows-PRNGSignatureMD2withRSAMD5withRSANONEwithRSASHA1withRSASHA256withRSASHA384withRSASHA512withRSASunPCSC1.8TerminalFactoryPC/SCSunRsaSign1.8KeyFactoryRSAKeyPairGeneratorRSASignatureMD2withRSAMD5withRSASHA1withRSASHA224withRSASHA256withRSASHA384withRSASHA512withRSASunSASL1.8SaslClientFactoryCRAM-MD5DIGEST-MD5EXTERNALGSSAPINTLMPLAINSaslServerFactoryCRAM-MD5DIGEST-MD5GSSAPINTLMXMLDSig1.8KeyInfoFactoryDOMTransformServicehttp://www.w3.org/2000/09/xmldsig#base64http://www.w3.org/2000/09/xmldsig#enveloped-signaturehttp://www.w3.org/2001/10/xml-exc-c14n#http://www.w3.org/2001/10/xml-exc-c14n#WithCommentshttp://www.w3.org/2002/06/xmldsig-filter2http://www.w3.org/2006/12/xml-c14n11http://www.w3.org/2006/12/xml-c14n11#WithCommentshttp://www.w3.org/TR/1999/REC-xpath-19991116http://www.w3.org/TR/1999/REC-xslt-19991116http://www.w3.org/TR/2001/REC-xml-c14n-20010315http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithCommentsXMLSignatureFactoryDOM
http://www.tj-hxxt.cn/news/228507.html

相关文章:

  • flash网站设计实例做合约交易哪个网站好
  • 西安手机网站定制网站建设注册二级建造师查询入口
  • 网站后台密码重置选服务好的网站建设公司
  • 高端营销型网站优秀网站要素
  • 绝味鸭脖网站建设规划书网站设计的主要风格
  • 绿色能源网站模板wordpress自定义字段面板
  • 娱乐网站代理商怎么做wordpress修改绑定域名
  • 东莞公司网站建设公司wordpress 侧边栏菜单 翻译
  • 网站设计专业需要什么厦门关键词优化软件
  • 响应式网站 图片居中济南软月建站
  • 网站建设包括哪些服务百家联盟推广部电话多少
  • 怎么用vs2010做网站设计一个数据库怎么做二个网站
  • 营销型网站制作成都大型游戏平台排行榜
  • 如何建设网站哪个济南兴田德润简介品牌衣服有哪些牌子
  • 视频网站建设流程做家居网站
  • 建设网站答辩情况seo服务商技术好的公司
  • 路由器 做网站推荐网站建设的电销该怎么打
  • 上海高端网站建设服务公建设银行东莞招聘网站
  • 做网站运营的职业生涯规划wordpress中文版会员中心
  • 龙华营销型网站建设公司网件路由器设置网址
  • 企业官方网站怎么申请做淘宝网站用什么软件做
  • 郑州动力无限网站建设做网站下载功能
  • 织梦做企业网站教程wordpress结构化数据插件
  • 网站开发环境怎么写wordpress主题首页文件夹
  • 股票分析网站可以做推广吗淮安网站建设公司
  • 做一份seo网站诊断长治网站制作怎么做
  • 网站一个页面多少钱慈溪企业网站
  • 南昌比较好的网站设计wap手机网站模版
  • 怎样做后端数据传输前端的网站科技有限公司属于什么企业类型
  • 小型门户网站建设方案wordpress 设置数据库