我如何才能确定密钥的加密(AES256或3DES 256)……因为这两个密钥都将是32个字符(每个字符8位*32个字符)=256位和Mime编码。
实例
MQAyAEgAOgA5ADUAMwA3AD8AQgBFAD4A---
g1EOWGFb JjCZ7BbH2RergtKUtDfXrNb ---
AES密钥是在Openssl中制作的,而3DES密钥是使用Java和以下API制作的。
javax.crypto.Cipher;
javax.crypto.KeyGenerator;
javax.crypto.SecretKey;
javax.crypto.SecretKeyFactory;
javax.crypto.spec.DESedeKeySpec;
javax.crypto.spec.IvParameterSpec;
首先,没有 3DES 256 这样的东西。3DES 的密钥大小为 128 或 192 位,其中 112 位和 168 位得到有效使用。请注意,3DES 的安全裕度甚至更低。
另一方面,AES可以与128、192和256位一起使用,所有这些都被使用。
现在,base 64(不是SMIME,这是一个更高级别的协议)每个字符有6位(不包括末尾的虚假位)。如果我检查您的密钥,它们都是192位大小,所以这不会帮助您区分密钥。您可以使用Apache编解码器库来解码base 64字符串。
然而,您的3DES密钥(第二个)似乎对3个单个DES密钥使用奇偶校验字节。这可以用来区分按键。请注意,这不是万无一失的,随机生成的AES密钥可能仅凭偶然机会就正确设置了奇偶校验位。然而,发生这种情况的可能性大约为2^24
。
可以使用方法 DESedeKeySpec.isParityAdjusted(byte[] key, int offset)
来检查奇偶校验是否正确设置。当然,首先需要解码 base 64 字符串。
请注意,有时在没有正确设置奇偶校验的情况下分发3DES密钥。在您的情况下,您需要使用KeyWorks
来生成密钥,否则可能无法设置奇偶校验。
检查密钥类型是否正确的另一种方法是使用两种算法解密一些已知的明文/密文/密钥对。
在本章中,我们将学习如何使用Java Cryptography从密钥库中检索密钥。 要从密钥库中检索密钥,请按照以下步骤操作。 第1步:创建KeyStore对象 java.security包的KeyStore类的getInstance()方法接受表示密钥库类型的字符串值,并返回KeyStore对象。 使用此方法创建KeyStore类的对象,如下所示。 //Creating the KeyStore
我正在编写android应用程序,使AES加密/解密的文件。我希望能够检测是否指定了不正确的密码,因此不匹配的密钥是为解密派生的。我使用aes/cbc/pkcs7padding和256位密钥。如果我执行cipher.doFinal(),我可以尝试/捕捉BadPaddingException,它会告诉我有些地方出错了,可能是key不正确。但是如果我使用CipherInputStream读取加密文件,
我创建了一个密钥库,它包括私钥和公钥。我需要使用java代码检索我的公钥和私钥。我在这里找到了一个检索私钥的方法。但我找不到检索公钥的方法。有人能告诉我一种取出公钥的方法吗
我们需要使用Azure key vault创建RSA密钥对,并将RSA公钥复制到外部系统。其要求是外部系统使用公钥加密数据,内部系统与azure key vault对话并对数据进行解密。我还没有访问Azure key vault的权限,所以需要查看文档。我有两个基本问题: > 有没有一种方法可以使用Azure portal以文本格式导出RSA公钥,而不使用API(https://docs.micr
我无法从azure key vault检索到运行在azure windows VM中的.NET控制台应用程序的秘密。下面是我使用过的代码,我已经给了服务主体在密钥库中的所有权限。