Tag: 安全

InvalidKeySpecException:algid解析错误,而不是序列

我正在编写一个从控制台输入的程序 – 一个zip文件的名称,一个zip文件的名称包含从第一个zip生成的(de / en)加密文件和一个包含公钥的文件。 解密时我得到exception: Exception in thread “main” java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid parse error, not a sequence at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:217) at java.security.KeyFactory.generatePrivate(KeyFactory.java:372) at com.Main.makePrivateKey(Main.java:148) at com.Main.decrypt(Main.java:40) at com.Main.main(Main.java:182) Caused by: java.security.InvalidKeyException: IOException : algid parse error, not a sequence at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:351) at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:356) at sun.security.rsa.RSAPrivateCrtKeyImpl.(RSAPrivateCrtKeyImpl.java:91) at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:75) at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:316) at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:213) … 4 […]

解决JBoss中的会话修复问题

我需要在JBoss中运行的Java Web应用程序中阻止Session Fixation ,一种特殊类型的会话劫持。 但是,似乎标准习惯用法在JBoss中不起作用 。 这可以解决吗?

将Ruby加密代码转换为Java

我在ruby中有遗留代码,使用OpenSSL进行加密 但是,我想用Java翻译它,我迷失了。 到目前为止,我最大的阻截者正在研究如何基于此代码生成IV。 任何帮助将不胜感激 def func_enc(data, key) cipher = OpenSSL::Cipher::Cipher.new(“aes-256-cbc”) cipher.encrypt cipher.pkcs5_keyivgen(key) cipher.update(data) encrypted_data << cipher.final return encryptedData end 编辑 为了澄清,我想使用Java Crypto。 这是我到目前为止提出的代码: SecretKeyFactory factory = SecretKeyFactory.getInstance(“PBKDF2WithMD5And256AES-CBC”); KeySpec spec = new PBEKeySpec(“Password”.toCharArray(), null, 2048, 256); SecretKey tmp = factory.generateSecret(spec); SecretKey secret = new SecretKeySpec(tmp.getEncoded(), “AES”); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); cipher.init(Cipher.ENCRYPT_MODE, secret); AlgorithmParameters params = cipher.getParameters(); […]

沙盒Java / Groovy / Freemarker代码 – 防止执行特定方法

我正在开发一个允许开发人员上传自定义groovy脚本和freemarker模板的系统。 我可以使用默认的Java安全基础架构在非常高的级别上提供一定级别的安全性 – 即阻止代码访问文件系统或网络,但是我需要限制对特定方法的访问。 我的计划是修改Groovy和Freemarker运行时以读取将某些方法列入白名单或列入黑名单的注释,但这会迫使我维护其代码的分叉版本,这是不可取的。 我基本上需要做的就是在从Groovy或Freemarker调用时阻止特定方法的执行。 我已经考虑过一个看看调用堆栈的黑客攻击,但这将是一个巨大的速度命中(而且非常混乱)。 有没有人有任何其他想法来实现这个?

在android上解密php加密数据

Android客户端(4.2.1)应用程序通过HttpPost请求将公钥发送到PHP (5.6)API。 此API使用符合AES RIJNDAEL_128对数据进行AES ,然后使用具有OpenSSL公共加密和RSA_PKCS1_OAEP_PADDING的客户端公钥加密AES加密的密钥。 它将通过XML编码的数据base64发送回客户端android应用程序,该应用程序将加密数据。 我已经设置了一个基本的PHP测试脚本来测试整个过程,这可以按预期工作。 目前我正在努力在客户端Android应用程序中实现解密,但已经解密AES密钥失败。 除了当前的问题,我还有其他问题(见最后)。 这是正在发生的事情的文本图形概要: client -> public key -> API -> data -> AESencrypt(data), RSAencrypt(AES-key) -> base64encode[AES(data)], base64encode[RSA(AES-key)] -> base64[AES(data)], base64[RSA(AES-key)] -> client -> base64[AES(data)], base64[RSA(AES-key)] -> base64decode[AES(data)], base64decode[RSA(AES-key)] -> AESdecrypt(data), RSAdecrypt(AES-key) -> data 我正在使用MCRYPT_RIJNDAEL_128加密数据,我读到这些数据与AES兼容(请参阅PHP doc for mycrypt )。 这是代码: <?php $randomBytes = openssl_random_pseudo_bytes(32, $safe); $randomKey = bin2hex($randomBytes); $randomKeyPacked […]

RSA密钥对使用充气城堡生成。 使代码可以从java程序运行

我使用的Java代码通过充气城堡库生成公钥和私钥。 我的问题是将它实现到我的Android设备可运行的代码中。 我的代码没有像我编写的那样显示RSA密钥,并且在我的大部分故障排除中,我仍然无法按照我的要求进行代码,尽管我没有错误。 我怀疑的是我将所有代码放入try / catch块的方式,但我不太确定。 编辑:代码较低 这是生成RSA公钥和私钥的Java类。 (有用) public class ClassMain { public static void main(String[]args) throws Exception { String ST = “Ebenezersawesome”; byte[] plainText = “ST”.getBytes(“UTF8”); // Generating RSA Key System.out.println(“\nStart generating RSA key”); KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“RSA”); keyGen.initialize(4096); KeyPair key = keyGen.generateKeyPair(); System.out.println(“Finish generating RSA key”); // // Creates an RSA Cipher […]

使用javamail,gmail因应用程序不太安全而拒绝身份validation

我正在运行一个非常基本的Javamail程序来尝试发送电子邮件。 这是带main()的独立程序。 一旦我开始工作,我计划在一个在tomcat下运行的servlet中使用Javamail。 运行此程序时,我收到AUTH LOGIN失败错误。 我尝试了几种不同的属性设置,但都没有解决问题。 然后我在SO上发现了一条post,建议降低我的Google帐户所需的安全级别。 当我降低安全设置时,身份validation成功。 当然,我立即回到Google帐户的更高安全级别。 我的问题是,如何使我的应用程序更安全,以便gmail不拒绝身份validation? 程序代码如下所示。 该程序非常类似于SO上的许多其他Javamail问题中的代码。 TryJavamail.java import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class TryJavamail { public static void main(String args[]) throws MessagingException { String submitName = “John Doe”; String submitEmail = “from@example.com”; String submitMessage = […]

签名代码有什么意义,比如jar子?

当每个人都可以使用jarsigner时,签署代码如Java的jar子有什么意义? 它如何提供安全性?

使用轻量级API生成Bouncy Castle RSA密钥对

令人惊讶的是,网上关于使用Bouncy Castle的轻量级API的信息非常少。 环顾四周后,我能够把一个基本的例子放在一起: RSAKeyPairGenerator generator = new RSAKeyPairGenerator(); generator.init(new RSAKeyGenerationParameters ( new BigInteger(“10001”, 16),//publicExponent SecureRandom.getInstance(“SHA1PRNG”),//prng 1024,//strength 80//certainty )); AsymmetricCipherKeyPair keyPair = generator.generateKeyPair(); 我对RSA和幕后发生的数学有基本的了解,所以我理解了publicExponent和strength是什么。 我认为publicExponent指的是phi(pq)的互质,并且从我收集的它可以是小的(如3),只要使用适当的填充。 但是,我不知道certainty是指什么(某些地方提到它可能指的是一个百分比,但我想确定)。 SecureRandom的使用是不言自明的。 RSAKeyGenerationParameters的文档完全没有价值(毫不奇怪)。 我唯一的猜测是它与生成的键的准确性有关,但我想再次确定。 所以我的问题是什么是certainty和publicExponent适当值? PS请不要回答“这取决于具体情况 – 您希望信息的安全性”。 假设最高程度的安全性(即4096位RSA密钥或更高)是非常安全的,除非另有说明……我也非常感谢链接,这些链接提供了使用Bouncy Castle的轻量级API的良好示例(我不是所有对JCA实施感兴趣或任何与之相关的例子)。

AccessController用法

我正在尝试了解java安全性的基础知识和AccessController.doPrivileged()用法我开始使用示例程序 import java.security.AccessController; import java.security.PrivilegedAction; public class AccessSystemProperty { public static void main(String[] args) { System.out.println(System.getSecurityManager()); AccessController.doPrivileged( new PrivilegedAction(){ public Boolean run(){ System.out.println(System.getProperty(“java.home”)); return Boolean.TRUE; } } ); } } 如果我尝试使用默认安全管理运行上面的代码我得到AccessControlException我的stacktrace是 C:\>java -Djava.security.manager AccessSystemProperty java.lang.SecurityManager@923e30 Exception in thread “main” java.security.AccessControlException: access denied ( java.util.PropertyPermission java.home read) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) […]