Tag: 安全

如何将HSM加密与JAVA集成?

如何将硬件安全模块加密与Java应用程序集成? 我正在寻找代码样本连接到HSM,生成密钥(非对称,对称),加密和解密数据(非对称,对称)和存储密钥。

在服务器上执行外部Java源代码 – 限制安全性和资源?

我正在考虑构建一个简单的在线服务,人们可以通过以源代码的forms将解决方案提交 到我的服务器 来解决编程练习,然后对其进行解释/编译和执行/测试。 通过使用Java VM,我可以提供对Java,Scala,Clojure,Ruby,Python和Javascript的支持。 但是当我仔细考虑它时,恐怕我不知道如何限制脚本的资源和权限。 我的意思是它不应该 写入磁盘 创建超过X个线程 运行超过X秒 使用超过X MB的内存 执行外部应用程序 等等 如何将每个脚本放在沙箱中? 根据我的阅读,SecurityManager似乎无法完成所有这些……

如何通过提供PrivateKey来获取RSA PublicKey?

我正在寻找一个Java函数,它将获得一个RSA PrivateKey并将返回正确的RSA PublicKey? 或者,是否有一个函数可以告诉我们RSA PrivateKey / PublicKey是否有效?

Java jnlp应用程序被安全设置阻止

我有一个企业java应用程序,它有大量的jars,通过jnlp文件下载到客户端的jvm缓存中。 当我启动应用程序时,我在Java控制台上获得以下堆栈跟踪: Exception in thread “AWT-EventQueue-1” java.lang.NullPointerException at com.sun.deploy.ui.DialogTemplate.imageAvailable(Unknown Source) at com.sun.deploy.ui.DialogTemplate.finalImageAvailable(Unknown Source) at com.sun.deploy.ui.ImageLoader$2.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) […]

Java以编程方式从密钥/证书中读取信息

我正在尝试构建证书/密钥管理工具,但我不明白如何获取证书/密钥的md5指纹。 例如,如果我在密钥库上使用keytool命令,我将获得 Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry Alias name: myname Creation date: 21-Aug-2011 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=bla bla, L=bla, ST=bla Issuer: CN=bla bla, L=bla, ST=bla Serial number: 123w3qa Valid from: Sun Aug 21 00:12:31 CEST 2011 until: Mon Jul 28 00:12:31 CEST 2110 […]

如何使用crypto-js库在客户端加密消息并在Java服务器上解密它

背景:我正在处理的应用程序应该脱机工作。 我有一个HTML5页面,用户键入的数据使用crypto-js库加密。 我希望将加密的消息发送到java webserver,然后在服务器端解密。 我正在做什么我能够使用Crypto-js加密消息 var message = “my message text”; var password = “user password”; var encrypted = CryptoJS.AES.encrypt( message ,password ); console.log(encrypted.toString()); // this prints an encrypted text “D0GBMGzxKXU757RKI8hDuQ==” 我想要做的是将加密文本“D0GBMGzxKXU757RKI8hDuQ ==”传递给java服务器端代码并​​解密加密的消息。 我尝试了很多选项来解密java服务器端的crypto-js加密消息。 请在服务器端找到我的代码,该代码应该对加密文本进行解密。 public static String decrypt(String keyText,String encryptedText) { // generate key Key key = new SecretKeySpec(keyText.getBytes(), “AES”); Cipher chiper = Cipher.getInstance(“AES”); […]

加密/解密:HMAC标签在解密方法中不匹配

我正在尝试编码加密和解密消息的加密和解密方法。 在encrypt方法中,它将接受一个字符串。 它将读入公钥并用于RSA密码。 然后,将使用具有AES密钥和IV的AES密码对消息进行加密。 然后,通过使用HMAC密钥,使用密文加密的AES生成HMAC标签。 AES密钥和HMAC密钥连接在一起并由RSA Cipher加密。 该方法将返回一个JSONObject,其中包含:RSA密文,AES密文,AES IV和HMAC标记。 它们是转换为hex字符串的字节数组。 在decrypt方法中,它将接收将被解析的JSON对象。 它将读入将在RSA密码中使用的私钥。 RSA密码将用于解密连接密钥。 解密后,密钥将分为AES密钥和HMAC密钥。 然后,将在AES密文上生成新的HMAC标记。 比较加密标签和新标签。 如果它们相等,则解密AES密文并获取消息。 当我运行我的代码时,没有错误,但它没有解密,因为2个标签不匹配。 我不知道为什么。 公钥和私钥是从.pem文件转换而来的.der文件。 请帮帮我。 谢谢! import java.security.*; import java.security.spec.*; import javax.crypto.*; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.IvParameterSpec; import org.json.*; import javax.xml.bind.DatatypeConverter; public class CryptographicTools { /** * This method encrypts a message * @param […]

续订SSL证书时,还需要更新Android BKS

所以这是一个简单的问题,但我不确定答案。 在android上开发SSL有时是一个棘手的领域。 大多数人都有两种选择:*接受所有证书并冒险MITM攻击*将证书打包为应用程序中的BKS。 在我的应用案例中,我选择将BKS打包并通过HttpsURLConnection读取它 KeyStore trustStore = loadTrustStore(); KeyStore keyStore = loadKeyStore(); TrustManagerFactory tmf = TrustManagerFactory .getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(trustStore); KeyManagerFactory kmf = KeyManagerFactory .getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(keyStore, KEYSTORE_PASSWORD.toCharArray()); SSLContext sslCtx = SSLContext.getInstance(“TLS”); sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); URL url = new URL(“https://myserver.com”); HttpsURLConnection urlConnection = (HttpsURLConnection) url urlConnection.setSSLSocketFactory(sslCtx.getSocketFactory()); 现在我遇到了麻烦。 我的证书快速到期,我不确定如果我升级它会产生什么效果。 问:续订SSL证书而不升级Android设备上的应用会阻止他们访问httpsurl吗? 问:不升级SSL证书有什么影响。 Android设备是否无法联系服务器

当我尝试使用证书转换字符串时,会引发exception

我有一个applet,用于签署文档,并将文档,签名和证书发送到服务器端。 在服务器端portlet接收这3个文件,所有文件都以base64格式存储,但是当我尝试获取证书时它会引发exception java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Empty input at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:104) applet边码: public static byte[] certificate; public static String getCertificateString() { String str = “”; byte[] result = null; result = Base64.encode(certificate); for (int i = 0; i < result.length; i++) { str += (char) (result[i]); } return str; } //initialization of certificate from […]

生成安全cookie令牌以持久存储

我正在尝试为我的网站创建登录和注册页面。 我希望使用cookie来跟踪用户会话,但我正在尝试以最恰当和安全的方式实现它。 我已经尝试过查看教程和论坛,但其中大部分已经过时,并且使用人们评论不安全的技术。 我理解令牌需要随机生成和加密,所以我发现一个建议在UUID上使用MessageDigest的响应。 但是我发现更多的文章表明这​​可能不像我想的那样安全……有关生成cookie标记以存储在我的数据库中的安全方法的任何建议吗? 当我尝试使用UUID方法时,我遇到了如何将其放入我的数据库,因为我无法找到如何将其转换为字符串。 这是我的代码…… UUID uuid = UUID.randomUUID(); MessageDigest salt = MessageDigest.getInstance(“SHA-256”); salt.update(uuid.toString().getBytes(“UTF-8”));