相关疑难解决方法(0)

Java 256位AES密码加密

我需要实现256位AES加密,但我在网上找到的所有示例都使用"KeyGenerator"生成256位密钥,但我想使用自己的密码.如何创建自己的密钥?我已经尝试将其填充为256位,但后来我得到一个错误,说密钥太长了.我确实安装了无限管辖区补丁,所以那不是问题:)

IE浏览器.KeyGenerator看起来像这样......

// Get the KeyGenerator
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128); // 192 and 256 bits may not be available

// Generate the secret key specs.
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
Run Code Online (Sandbox Code Playgroud)

代码来自这里

编辑

我实际上是将密码填充到256个字节,而不是位,这太长了.以下是我现在使用的一些代码,我对此有更多的经验.

byte[] key = null; // TODO
byte[] input = null; // TODO
byte[] output = null;
SecretKeySpec keySpec = null;
keySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
output = cipher.doFinal(input)
Run Code Online (Sandbox Code Playgroud)

您需要自己做的"TODO"位:-)

java encryption passwords cryptography aes

381
推荐指数
6
解决办法
52万
查看次数

.Net和iPhone之间的AES互操作性?

我需要加密iPhone上的字符串并将其发送到.Net Web服务进行解密.我能够在iPhone和.Net上加密/解密,但是来自iPhone的加密字符串不能被.Net解密.我得到的错误是"填充无效,无法删除".

.Net代码来自:http: //blog.realcoderscoding.com/index.php/2008/07/dot-net-encryption-simple-aes-wrapper/

iPhone代码使用以下示例代码:http://nootech.wordpress.com/2009/01/17/symmetric-encryption-with-the-iphone-sdk/

AFAIK我的关键设置是相同的:

result.BlockSize = 128; // iPhone: kCCBlockSizeAES128
result.KeySize = 128; // kCCBlockSizeAES128
result.Mode = CipherMode.CBC;
result.Padding = PaddingMode.PKCS7; // kCCOptionPKCS7Padding
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的生成密文的方法.你好/你好是:

e0PnmbTg/3cT3W + 92CDw1Q == .Net

iPhone上的yrKe5Z7p7MNqx9 + CbBvNqQ ==

和"openssl enc -aes-128-cbc -naltalt -a -in hello.txt -pass pass:hello"生成:QA + Ul + r6Zmr7yHipMcHSbQ ==

更新:我在这里发布了相应的工作代码.

.net iphone encryption aes

22
推荐指数
1
解决办法
2万
查看次数

AES在iOS(Obj-C)和Android(Java)中获得不同的结果

我是这种加密的完全新手,但我有一个Java应用程序和iOS,我希望他们都能够将文本转换成相同的结果.我用AES.我找到了这些代码,当然稍作修改,但它们会返回不同的结果

iOS代码:

- (NSData *)AESEncryptionWithKey:(NSString *)key {    
    unsigned char keyPtr[kCCKeySizeAES128] = { 'T', 'h', 'e', 'B', 'e', 's', 't', 'S', 'e', 'c', 'r','e', 't', 'K', 'e', 'y' };
    size_t bufferSize = 16;
    void *buffer = malloc(bufferSize);
    size_t numBytesEncrypted = 0;
    const char iv2[16] = {  65, 1, 2, 23, 4, 5, 6, 7, 32, 21, 10, 11, 12, 13, 84, 45 };
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
                                          kCCAlgorithmAES128,
                                          kCCOptionECBMode | kCCOptionPKCS7Padding,,
                                          keyPtr,
                                          kCCKeySizeAES128,
                                          iv2,
                                          @"kayvan",
                                          6,
                                          dataInLength,
                                          buffer,
                                          bufferSize,
                                          &numBytesEncrypted);


    if …
Run Code Online (Sandbox Code Playgroud)

java android aes ios

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

aes ×3

encryption ×2

java ×2

.net ×1

android ×1

cryptography ×1

ios ×1

iphone ×1

passwords ×1