Tag: 安全

javax.security.cert.X509Certificate vs java.security.cert.X509Certificate?

你有没有发现标题的差异? (对我来说,花了一些时间) 所以我使用了与java.security.cert.X509Certificate连接的bouncy castle来创建证书。 现在我正在寻找一种从原始字节创建java.security.cert.X509Certificate的方法。 我没有任何方法在java.security.cert.X509Certificate执行此操作,但javax.security.cert.X509Certificate有一个(getInstance静态方法)。 问题是我无法将javax.security.cert.X509Certificate为java.security.cert.X509Certificate 。 关于如何做的任何想法,将原始字节转换为java.security.cert.X509Certificate ? 另外,一个抽象类和另一个类之间的区别是什么? 为什么java有两个具有不同function?

Java解密 – 使用填充密码解密时,输入长度必须是8的倍数

我有一个安全课程的项目,但我有一个问题。 基本上,我正在尝试加密,然后解密密码,但我得到这个错误的解密。 “使用填充密码解密时,输入长度必须是8的倍数” 我这样做是对的吗? 我正在关注2012年的一篇文章。 它还安全吗? 我也尝试更换算法,但似乎没有任何工作: “AES”,“RSA / ECB / PKCS1Padding”,“PBEWithHmacSHA256AndDESede”……以及更多 我得到: 线程“main”中的exceptionjava.security.NoSuchAlgorithmException:RSA / ECB / PKCS1Padding SecretKeyFactory not not import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import java.util.Base64; public class ProtectedConfigFile { private static final char[] PASSWORD = “ytfchchchgcv”.toCharArray(); private static final byte[] SALT […]

应用程序中的Android模式输入

我想知道是否有其他替代方案适用于Android的平庸EditText密码输入。 是否有可以集成到我的应用程序的API或开源代码,类似于锁定屏幕模式解锁? 也许Intent返回一个散列,数字,字符串或代表用户的Pattern输入的任何东西。 我在想类似的东西。 我的代码称之为意图。 类似于Lockscreen Pattern的东西显示 用户输入他的模式 Intent返回表示该模式的内容。 我取消了返回的数据。 我为什么要/需要这个? 在我的应用程序中,我需要来自用户的输入密码(不用于登录或用于加密的东西)。 而且我认为用户输入是很乏味的。 这些刷卡锁模式会更容易。

iOS对称密钥加密/解密等同于Java

我试图加密/解密数据ios到java和java到ios但我在java中加密的数据没有在ios中正确解密,在ios中加密的数据在java中没有正确解密 – (NSData *) encrypt:(NSData *) dataToEncrypt symmetricKey:(NSData *)symmetricKey context:(CCOperation)encryptOrDecrypt{ NSUInteger data_length= [dataToEncrypt length]; uint8_t input_raw_data[data_length]; //The [dataToEncrypt length] gives the number of chars present in the string.So say there are 10 chars. //Now,the getBytes needs to get the raw bytes from this ie binary NSData.But suppose the encoding was //full 16 bit encoding then […]

文件加密Java

我正在制作一个包含一些数据的系统,我希望它采用这种数据(XML格式)并将其保存为txt文件中的加密字符串,稍后当软件再次打开时,解密文件并正常阅读。 我已经拥有将xml转换为字符串的所有代码,我已经有了保存它的代码,我只需要一些加密/解密代码的帮助? 注意:我确实找到了一些加密/解密的代码,但似乎我无法将代码拆分为2种方法。 这是我的尝试: public class AesEncrDec { public static String encrypt(String Data) { byte[] byteCipherText = null; try { String plainData=Data,cipherText,decryptedText; KeyGenerator keyGen = KeyGenerator.getInstance(“AES”); keyGen.init(128); SecureRandom rnd = new SecureRandom(); SecretKey secretKey = keyGen.generateKey(); IvParameterSpec iv; iv = new IvParameterSpec(rnd.generateSeed(16)); Cipher aesCipher = Cipher.getInstance(“AES”); aesCipher.init(Cipher.ENCRYPT_MODE,secretKey,iv); byte[] byteDataToEncrypt = plainData.getBytes(); byteCipherText = aesCipher.doFinal(byteDataToEncrypt); cipherText […]

使用java创建受密码保护的文本文件

我想写一个java程序,它创建带有密码保护的文本文件。 这意味着当用户打开文件时,它应该要求密码打开文件。 任何人都可以告诉我如何做到这一点?

Java Applet沙箱安全性,本地访问和外部访问

我的(代码签名)java applet中存在一个错误“访问被拒绝(java.net.SocketPermission xxxx:443 connect_resolve。”我们有一个html“保存”按钮,它正在调用(通过javascript)applet方法来保存文件,加载到小程序中,进入网络服务器。经过一些广泛的谷歌研究,我通过在doPrivileged()中包装我们的小程序的保存方法代码来修复它。错误似乎是固定的,人们很高兴。 我想确认我完全理解我应用的原始情况和解决方案(倒退,我知道,但转身时间不允许我真正研究这个问题)。 特别让我感到困惑的是,我们在内部网络中的测试服务器上广泛测试了我们的applet,直到我们从网络外部的客户端计算机上尝试javascript“保存”按钮之前,才发现此错误。 所以在这一点上,我只是做了一个有根据的猜测:这就是java applet沙箱机制的工作原理。 这是真的? 只要客户端小程序从位于同一域网络中的客户端计算机访问Web服务器资源,它就被视为在沙箱墙内? 如果客户端计算机位于Web服务器的本地网络外部,则applet请求被认为是在沙箱墙之外并且需要doPrivileged? 还是在这里有另一种解释我错过了? 我无法在sun的文档中找到任何内容,也没有通过google查找具体certificate或反驳我断言的内容。 非常感谢来自具有更多java applet经验的人的澄清

为什么keyStore.aliases()对于pkcs12是空的

我正在尝试使用以下代码从.p12文件加载PrivateKey: Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); java.security.KeyStore keyStore = KeyStore.getInstance(“PKCS12”, “BC”); keyStore.load(new FileInputStream(new File(“my_domain_com.p12”)), password); keyStore.aliases().hasMoreElements(); //this is false java.security.PrivateKey privateKey = (PrivateKey) keyStore.getKey(“SomeAlias”, password); 我试图找出没有别名的原因。 但是我无法找到。 空的别名可能是什么原因? 我想获取私钥,并使用此密钥生成一些文本。 还有其他的apporach吗? 我也有.cer文件,但我不确定我应该一起使用。

什么metod KeyAgreement.generateSecret(String algorithm)呢?

我们实现了Diffie-Hellman密钥交换算法: KeyAgreement aKeyAgree = KeyAgreement.getInstance(“DH”); keyAgreement.init(myPrivateKey); keyAgreement.doPhase(otherPublicKey) 现在我们需要生成一个用于AES加密的秘密。 有方法generateSecret(String algorithm) 。 我想我应该用’AES’说法来称呼它。 但对于DH,我使用512位长度的公钥,所以秘密也应该是512位长度。 但AES允许256位长度的密钥作为最大值。 没有参数的plain方法generateSecret()返回512位DH密钥。 但是generateSecret(String)呢? 它如何将512位密钥转换为256/128位AES密钥?

如何在JASPIC中保存经过身份validation的用户?

我开发了一个安全validation模块(SAM)并实现了validateRequest方法。 我还有一个简单的webapp配置为使用此SAM。 在我的validateRequest方法中,我检查clientSubject并使用硬编码的用户名和具有硬编码组名的GroupPrincipalCallback设置CallerPrincipalCallback : final CallerPrincipalCallback callerPrincipalCallback = new CallerPrincipalCallback(clientSubject, “anonymous”); final GroupPrincipalCallback groupPrincipalCallback = new GroupPrincipalCallback(clientSubject, new String[] {“user”}); try { this.handler.handle(new Callback[] {callerPrincipalCallback, groupPrincipalCallback}); } catch (IOException | UnsupportedCallbackException e) { logger.error(e.getMessage()); } 我注意到每次刷新webapp中的servlet时,客户端主题都是空白的logger.debug(“Client: {}”, clientSubject); : 2015-05-05 11:21:02,200 DEBUG nmjsSaml2AuthModule [http-listener-1(2)] Client: Subject: 是否有可能以某种方式“保存”主题,以便主题附加到会话,我可以简单地每次都跳过登录同一个用户? 编辑我想通过手动将它存储在HttpSession找到了一种方法: req.getSession().setAttribute(“subject”, user); 不漂亮,但它的工作原理。