我正在为执行加密操作的JVM(在Clojure中)编写软件。具体来说,给定secret输入、secretkey、非secret盐、非secret个性化,它使用BLAKE2导出512位keyMaterial。然后,它使用Arrays类中的工具将该数组分成两个256位block。(source)该操作的实际实现存在于libsodium中所以它是在C中实现的。我正在使用caesium访问它,它是kalium的包装器,一个使用jnr-ffi的库调用底层C实现。由于上面的所有缓冲区都有敏感的keyMaterial,我想确保它已从内存中清除。我不确定如何在JVM上安全地执行此操作(哎呀,我什至不确
我想咨询一些关于Java中SecureRandom的常见神话、安全与性能权衡的问题。在网上查了一段时间,整理了以下资料。我希望这里的人能帮助我确认我得到了什么,并希望对实际选择实现的内容有一些想法。基本上这里有一些关于SecureRandom的最受欢迎和最详尽的文章:正确使用Java的SecureRandom:https://www.synopsys.com/blogs/software-security/proper-use-of-javas-securerandom/使用Java的SecureRandom时的问题:https://www.synopsys.com/blogs/sof
我们已将Java产品配置为仅使用经FIPS验证的RSAJCE加密提供程序。但是,当只有RSA库在java.security中列出时,该产品将无法工作。因此,有些东西正在向其他提供商请求非FIPS算法。通过排除过程,我们可以知道哪些jar是成功操作所必需的,但这并没有告诉我们正在请求哪些算法,或者由谁请求。这似乎是一个常见问题,但显然我们没有找到正确的文档或Google搜索字符串:是否有任何可靠、方便且一致的机制来确定哪些JCE提供程序正在使用运行JVM实例? 最佳答案 您可以使用Security.getProviders()枚举提供
我有以下代码:PrivateKeykey=null;X509Certificatecert=null;KeyPairkeyPair=null;finalReaderreader=newStringReader(pem);try{finalPEMReaderpemReader=newPEMReader(reader,newPasswordFinder(){@Overridepublicchar[]getPassword(){returnpassword==null?null:password.toCharArray();}});Objectobj;while((obj=pemReader
我们有一个应用程序使用BouncyCaSTLe通过PBEWITHSHA256AND128BITAES-CBC-BC算法加密数据。它在运行OpenJDK1.7的Ubuntu上运行良好。但是,当我们将其移动到同时运行OpenJDK1.7的RedHat6.4时,我们会遇到以下异常:java.security.NoSuchAlgorithmException关于可能导致此问题的任何想法。我们如何将PBEWITHSHA256AND128BITAES-CBC-BC算法添加到RedHat6.4?p.s.应用程序在JBoss中运行。privateStringcryptoAlgorithm="PBEWI
我正在使用GnuPGJavaAPI来加密/解密文件。用Google搜索并找到了一个JavaWrapperGnuPGforJava,GPGME(GnuPGMadeEasy,C语言库)的Java包装器。官网也引用this作为Java包装器。所以按照说明,设置ant并尝试运行antcleanrelease它正在抛出错误。但是maven构建工作和jar文件也生成了。运行ant时出现以下错误。C:\Users\user\Desktop\MFT\gnupg-for-java-master>antcleanreleaseBuildfile:C:\Users\user\Desktop\MFT\gnup
有没有一种方法可以生成适合使用Sun的keytool程序进行加密的128位key对?似乎http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator中可用的算法不支持或不允许短于512位的key。key对将与ff一起使用。代码片段:Security.addProvider(newBouncyCastleProvider());KeyStorekeyStore=KeyStore.getInstance("PKCS12");FileInputStreamkeyS
我正在阅读有关公钥公钥密码学(http://en.wikipedia.org/wiki/Public-key_cryptography)的维基百科,其中写道:IntheDiffie–Hellmankeyexchangescheme,eachpartygeneratesapublic/privatekeypairanddistributesthepublickey...Afterobtaininganauthenticcopyofeachother'spublickeys,AliceandBobcancomputeasharedsecretoffline.Thesharedsecretc
javax.crypto.IllegalBlockSizeException:数据不得超过53个字节我知道这是因为RSA算法只能加密具有RSAkey长度的最大字节长度的数据,以位除以8减11填充字节,即最大字节数=以位为单位的key长度/8-11。我这里使用的是512位key大小,所以它不允许超过53位。但是我需要维护512位key,但加密超过53字节是否有任何可能。 最佳答案 是也不是。您不能使用RSA加密,但您可以使用以下方法之一:使用对称算法加密并传递使用RSA加密的key的常用方法。例如,使用公钥PK将数据D发送给另一个人:
我想使用bouncycaSTLe生成一个简单的CMS签名。此代码有效!Security.addProvider(newBouncyCastleProvider());Stringpassword="123456";KeyStoreks=KeyStore.getInstance("PKCS12");ks.load(newFileInputStream("c:/cert_123456.p12"),password.toCharArray());Stringalias=(String)ks.aliases().nextElement();PrivateKeykey=(PrivateKey)k