如何使用java在SSL密码套件中使用ChaCha密码
我试图找到在JavaSSL客户机中编辑受支持的密码套件的方法,以便提供密码套件的特定列表 一个建议的解决方案是使用@jww在此链接中发布的SSLSocketFactoryEx类: 我添加了SSLSocketFactoryEx类,并运行列出该类支持的密码的代码(注意:我使用了GetCipherList();而不是getSupportedCipheSuites();因为第一个是我在SSLSocketFactoryEx中找到的)。代码是:如何使用java在SSL密码套件中使用ChaCha密码,java,sockets,ssl,bouncycastle,Java,Sockets,Ssl,Bouncycastle,我试图找到在JavaSSL客户机中编辑受支持的密码套件的方法,以便提供密码套件的特定列表 一个建议的解决方案是使用@jww在此链接中发布的SSLSocketFactoryEx类: 我添加了SSLSocketFactoryEx类,并运行列出该类支持的密码的代码(注意:我使用了GetCipherList();而不是getSupportedCipheSuites();因为第一个是我在SSLSocketFactoryEx中找到的)。代码是: import java.io.IOException; imp
import java.io.IOException;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import java.util.Arrays;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class ListCiphers {
public static void main(String[] args) throws UnknownHostException, IOException, KeyManagementException, NoSuchAlgorithmException
{
Security.addProvider(new BouncyCastleProvider());
//BC is the ID for the Bouncy Castle provider;
if (Security.getProvider("BC") == null){
System.out.println("Bouncy Castle provider is NOT available");
}
else{
System.out.println("Bouncy Castle provider is available");
}
SSLSocketFactoryEx factory = new SSLSocketFactoryEx();
String[] cipherSuites = factory.GetCipherList();
System.out.println(Arrays.toString(cipherSuites));
} //end main
}
我的代码得到Bouncy Castle(BC)提供商的支持,该提供商表示它支持规范中的ChaCha密码。见:
代码结果(支持的密码)为:
为什么我看不到查查密码的密码
如果您查看SSLSocketFactoryEx的代码,它包含几个带有ChaCha的密码套件
为什么我在使用BC provider后无法将它们放入受支持的密码套件列表中?如何将以下密码套件添加到受支持的密码套件列表中,以便将其包含在客户端hello消息中
ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
请提供帮助。问题在于JSSE实现(实现Java TLS支持)不支持ChaCha20。ChaCha20实现现在可以通过JCE提供程序使用,这并不会改变这一点 这些类型的密码类不能直接插入;密码对于要使用的密钥、IV、填充等有特定的要求。因此,您需要围绕密码编写代码,以使其得到特定TLS实现的支持
因此,您需要等待它得到支持(如果有的话),或者使用支持它的JSSE(JavaSecureSocketExtensions,TLS)提供程序。我想它可能会在1.3最终版后可用,因为它在AEAD(认证)密码上实现了标准化,ChaCha20+Poly 1305将是一个非常快速的配置。@jww:如果你能帮助plz.等待交付,或者帮助交付,BC没有SSL提供程序吗?@EJP仅在轻量级API中(
org.bouncycastle.
). 我认为它没有JSSE提供程序,这正是用户试图使用的。尽管如此,使用轻量级API还是有可能的。@Maarten Bodewes我不明白,从你的回答来看,我是否可以使用BC来实现我想要的?若否,原因为何?BC规范称其支持ChCha。你能帮助我使用另一种编程语言来添加/删除OpenSSL中支持的任何密码吗??python允许这样做吗?再说一遍:在通用API中支持单独的密码并不意味着TLS实现可以自动神奇地使用它。这将需要额外的编程。这适用于任何实现。这就像为一辆汽车找到一个随机的轮子,并期望它不需要修改就可以安装。如果是轻量级API,可能就是在那里实现的。
ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
DHE_RSA_WITH_CHACHA20_POLY1305_SHA256