Tag: 加密

加密和反编译

我即将把我的Android应用程序推向市场。 我最近加密了所有的服务器/客户端通信。 我想知道的是,如果我的数据是使用专用密钥加密的,并且如果一个人反编译我的代码并提取密钥,那么首先是否值得加密数据? 当数据未加密时,我的通信运行得更快。 随着游戏成为动作游戏,滞后将是一个巨大的“有趣的杀手”,根据经验,我知道这是令人沮丧的。 我知道加密使应用程序更安全,它使游戏玩家和服务器更安全,但它会导致巨大的滞后。 安全性是否值得扣除性能? 当您的代码可以被反编译时,甚至值得使用加密? 我已经使用了Android Proguard但是如果有人真的想要反编译我的代码,他们会花时间来解决所有这些垃圾问题。

客户端和服务器之间的安全连接

我正在开发一个服务器组件,它将为嵌入式客户端提供服务,这也是我的控制。 现在一切都是测试版,安全性如下: 客户端通过https发送用户名/密码。 服务器返回访问令牌。 客户端通过自定义标头中的访问令牌通过http进行进一步请求。 这对于演示来说很好,但它有一些问题需要在发布之前修复: 任何人都可以复制login请求,重新发送并获取访问令牌。 有些用户回答说这不是问题,因为它超过了https。 我的错。 任何人都可以通过检查请求标头来监听并获取访问密钥。 我可以想到一个对称的密钥加密,带有时间戳,所以我可以拒绝重复的请求,但我想知道这个场景是否有一些众所周知的良好实践(这似乎很常见)。 非常感谢您的洞察力。 PS:我正在使用Java作为服务器而客户端是用C ++编写的,以防万一。

使用AES SecretKey的Java KeyStore setEntry()

我目前正在使用Java中的密钥处理类,特别是使用KeyStore。 我正在尝试使用AES实例生成SecretKey,然后使用setEntry()方法将其放在KeyStore中。 我已经包含了我的代码的相关部分: // The KS Object private KeyStore keyStore; private KeyStore.SecretKeyEntry secretKeyEntry; private KeyStore.ProtectionParameter protectionParameter; private KeyGenerator keyGenerator; private SecretKey secretKey, newSecretKey; keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyGenerator = KeyGenerator.getInstance(“AES”); keyGenerator.init(256); newSecretKey = keyGenerator.generateKey(); protectionParameter = new KeyStore.PasswordProtection(KEYSTORE_PASSWORD.toCharArray()); secretKeyEntry = new KeyStore.SecretKeyEntry(newSecretKey); keyStore.setEntry(KEYSTORE_ALIAS, secretKeyEntry, protectionParameter); 我使用的两个常量也定义为字符串。 我不断得到的exception是在我的setEntry()调用中: java.security.KeyStoreException: Cannot store non-PrivateKeys at sun.security.provider.JavaKeyStore.engineSetKeyEntry(Unknown Source) at sun.security.provider.JavaKeyStore$JKS.engineSetKeyEntry(Unknown […]

以编程方式发现java无限加密

我有一个Java应用程序,需要安装JCE Unlimited Strength策略文件才能生成证书。 但是,目前,如果未安装文件,系统将无提示失败,而不是抛出exception或其他内容。 有没有一种程序化的方法来检查应用程序中的这些文件? 谢谢。

检索解密数据时出现问题

我正在研究加密 – 解密程序。 程序从用户获取输入并加密。 然后它将加密数据存储在ms访问数据库表中。 稍后,从表中检索数据,解密并返回给用户。 我将数据存储为ms访问中的文本。 加密算法返回一个大小为16的字节数组。但是当我从数据库中检索数据时,我得到一个大小为8的字节数组。 帮我解决这个问题……

找不到Java安全类

启动程序时,会弹出下一个错误 java.lang.NoClassDefFoundError:无法初始化类javax.crypto.SunJCE_b 这意味着这个类缺失虽然我已经手动找到这个类,但是通过jar / ide工作,但是通过服务不能完美地工作。 也许我需要做一些修改? 但是哪个? 提前致谢

初始化FingerpringManager.Crypto对象,得到没有AndroidKeyStore提供程序支持的Crypto原语?

我正在使用Android FingerPrintManager API并使用KeyPairGenerator创建密钥对,我想使用公钥加密密码,然后通过委托fingerPrint对用户进行身份validation进行解密,但是一旦我运行我的项目就会崩溃并给出 引起:java.lang.IllegalArgumentException:没有AndroidKeyStore提供者支持的Crypto原语 我从这里使用了代码: Android指纹API加密和解密这篇文章说他能够进行ecryption和解密,并且遵循相同的代码和步骤。 这是我的代码 public KeyStore getKeyStore() { try { return KeyStore.getInstance(“AndroidKeyStore”); } catch (KeyStoreException exception) { throw new RuntimeException(“Failed to get an instance of KeyStore”, exception); } } public KeyPairGenerator getKeyPairGenerator() { try { return KeyPairGenerator.getInstance(“RSA”, “AndroidKeyStore”); } catch (NoSuchAlgorithmException | NoSuchProviderException exception) { throw new RuntimeException(“Failed to get an instance […]

RSA加密在生成公钥/私钥之前强制关闭

我正在尝试为RSA加密生成我的第一个公钥/私钥对。 这是我第一次这样做,但通过查看各种教程和网站,我决定使用以下代码。 虽然我的代码没有给我错误,但它强制关闭。 一切都贴出来,包括我的import,可以sombody请帮助我理解为什么我的代码没有生成密钥并给我错误? 是的,我确实在AndroidManifest.xml文件中声明了它 import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.math.BigInteger; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; public class RSA { public static void GenerateKeyPair() { try { KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(4096); KeyPair kp = kpg.genKeyPair(); KeyFactory fact = KeyFactory.getInstance(“RSA”); RSAPublicKeySpec pub = fact.getKeySpec(kp.getPublic(), RSAPublicKeySpec.class); RSAPrivateKeySpec priv = […]

如何用Bouncy Castle生成对称密钥?

如何使用Bouncy Castle生成对称密钥? PrivateKeyFactory和PublicKeyFactory似乎都与AsymmetricKeyParameter相关。 我不想知道任何JCA / JCE API – 相反,我只对Bouncy Castle特定的API感兴趣。 可以(应该)我只生成一个随机字节?

让BouncyCastle解密GPG加密的消息

如何让BouncyCastle解密GPG加密的邮件? 我使用gpg –gen-key在CentOS 7命令行创建了一个GPG密钥对。 我选择RSA RSA作为加密类型,我使用gpg –export-secret-key -a “User Name” > /home/username/username_private.key导出密钥gpg –export-secret-key -a “User Name” > /home/username/username_private.key和gpg –armor –export 66677FC6 > /home/username/username_pubkey.asc 我能够将username_pubkey.asc导入另一个电子邮件帐户的远程Thunderbird客户端,并成功将加密的电子邮件发送到username@mydomain.com。 但是当我在mydomain.com上运行的Java / BouncyCastle代码尝试解密GPG编码的数据时,它会出现以下错误: org.bouncycastle.openpgp.PGPException: Encrypted message contains a signed message – not literal data. 如果你查看下面的代码,你会看到这与PGPUtils.decryptFile()的行相对应,其中说明了else if (message instanceof PGPOnePassSignatureList) {throw new PGPException(“Encrypted message contains a signed message – not literal data.”); […]