标签: aes

C#使用System.Security.Cryptography.Aes进行AES256加密的示例

我需要实现AES 256加密/解密,我无法找到一个正常工作的示例.

MSDN建议我应该使用AES类.

Rijndael类是Aes算法的前身.您应该使用Aes算法而不是Rijndael.有关更多信息,请参阅.NET安全博客中的Rijndael和AES之间的条目.

有没有人能指出我使用AES类AES256的好例子?

为了增加一点清晰度:

我有一个密码文件,其中包含共享密钥和一串加密文本.我需要解密文本然后验证它.

我见过的所有示例都希望至少有2个参数来执行加密/解密.

我是否能够从密码文件中的文本推断出初始化向量和密钥?

这是我的密码文件中保存的文本示例:

ÊÚḱÌráƒ@†²;Ä;öDWnªóª©¨¨L

c# encryption aes

21
推荐指数
2
解决办法
9万
查看次数

AES/CBC/PKCS5Padding与AES/CBC/PKCS7Padding具有256个密钥大小的性能java

我目前正在AES/CBC/PKCS5Padding用于加密具有256字节密钥大小的Java文件,但在搜索时我在stackexchange PKCS#5-PKCS#7 Padding上找到了它,并且提到了,

PKCS#5填充是PKCS#7填充的子集,用于8字节块大小

所以我想知道

  1. 对于上述配置,性能AES/CBC/PKCS7Padding会更好AES/CBC/PKCS5Padding吗?
  2. 我们如何在Java中配置块大小,如上所述

    PKCS#7填充适用于1到255字节的任何块大小.

我的示例代码是,

SecureRandom rnd = new SecureRandom();
IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16));

KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(256);
SecretKey k = generator.generateKey();

Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, k, iv);
Run Code Online (Sandbox Code Playgroud)

java encryption aes pkcs#5 pkcs#7

21
推荐指数
1
解决办法
7万
查看次数

使用.NET类的OpenSSL加密

我正在寻找创建一个使用与OpenSSL兼容的.NET库的类.我知道有一个OpenSSL.Net包装器,但我宁愿避免引用第三方\非托管代码.我不是在寻找关于这是否是正确选择的讨论,但有理由.

目前我有以下内容,我认为应该与OpenSSL兼容 - 它有效地做了我认为OpenSSL从OpenSSL文档中所做的事情.但是,即使只使用这个类来进行加密和解密,我也会收到以下错误:

[CryptographicException] Padding is invalid and cannot be removed.
Run Code Online (Sandbox Code Playgroud)

我已经逐步完成了代码并验证了salt\key\iv在加密和解密过程中都是一样的.

请参阅下面的示例类和调用加密解密.欢迎任何想法或指示.

public class Protection
    {
        public string OpenSSLEncrypt(string plainText, string passphrase)
        {
            // generate salt
            byte[] key, iv;
            byte[] salt = new byte[8];
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            rng.GetNonZeroBytes(salt);
            DeriveKeyAndIV(passphrase, salt, out key, out iv);
            // encrypt bytes
            byte[] encryptedBytes = EncryptStringToBytesAes(plainText, key, iv);
            // add salt as first 8 bytes
            byte[] encryptedBytesWithSalt = new byte[salt.Length + encryptedBytes.Length];
            Buffer.BlockCopy(salt, 0, encryptedBytesWithSalt, 0, salt.Length);
            Buffer.BlockCopy(encryptedBytes, 0, encryptedBytesWithSalt, salt.Length, …
Run Code Online (Sandbox Code Playgroud)

.net c# encryption openssl aes

20
推荐指数
1
解决办法
3万
查看次数

如何使用CryptoJS AES解密消息.我有一个有效的Ruby示例

我能用Ruby解密AES加密消息,如下所示:

require 'openssl'
require 'base64'

data = "IYkyGxYaNgHpnZWgwILMalVFmLWFgTCHCZL9263NOcfSo5lBjAzOZAtF5bF++R0Bi+9c9E+p3VEr/xvj4oABtRWVJ2wlWzLbYC2rKFk5iapFhb7uZCUpO4w4Su3a5QFa2vInjYueziRoqySZd/DpstMJ8rsJ94VGizFFFZ1l0sw1ax+wfBAv5+wHs/hlnHi/ea66KBO3rgXKahvV28h+4bh5etc8RCrmiiNbfg6Oj0jQJDjdYIdW8T9YPOI9E1hih8lbfRnMWcOFJgYekfLpoy5LI525UGnlM46J1k6ekLqsn9FqvbiOOoLgqa4YqBm1i9P0ePyjkME+t+RiL8xXX+ItgOYr9G7kM64wlTJPCW8B/crmUdmGzQNC/hD/u/8wfHBS2f8u6OtQMG/+Kpk1oju8lcUZGI/4S8A6/OuktvQr2zgnbs2aADMrM37Oait/pJ3G73S7NwVT8EaK+X43c0C/fUvW2/bD/rqCNpAh9WQlz4Cj6JHwjbmwuind6aCimF1tHjXuR9FXu+g17sPT4ZkKZ6aeBG+m170XdCGn2hVM0wH1rh3VeCG2u/JFqfuGKGSoqeHeNY/icu9pEhtZDzHd7aPoaMXcWvXC9PjooBf7GM1EPacSdnon1kBobjtKSt1l15DjO5TMrJoX7VO7GotQwo+uI/u5Kop01hBXxyxyggl1/8N0ESohPJoqLDrIwvbGK5kW4B49FVPnx9CMvjZDdSsoxPAh+hx6SPe8Hj0Nx4bRs06cbtOkte/V8QSYIqjiJDleEqPrdiKlvgToZz9L29ZR/3Ln65qU1sq7q9c0SEYxIopV7TdTjFS7y76zDPFZkhzc3DjfLtJo/M1hdtt648APcZdmAIgWH6fh3eJZ0qbiPh8RStYH7I2COmnlMw4+t/B5mlhYVSgwPK2Ir736Mh+P9Bw0fF8r9Ghhs4AJzpU0RiK9d1tCsrLfK/hSRwTXhtsSB6eDWEGkO7oeEIz43mgn0sv3SrA9JNHzYkg="
key = "2e35f242a46d67eeb74aabc37d5e5d05"

aes = OpenSSL::Cipher::Cipher.new('aes-128-cbc')
aes.decrypt
aes.key = key.scan(/../).collect{ |x| x.hex }.pack('c*')
aes.iv = Base64.decode64(data)[0...16]
puts aes.update(Base64.decode64(data)[16..-1]) + aes.final
# => JSON data...
Run Code Online (Sandbox Code Playgroud)

作为CryptoJS的新手,我没有把工作替代方案放在一起.这是我到目前为止所做的:

data = "IYkyGxYaNgHpnZWgwILMalVFmLWFgTCHCZL9263NOcfSo5lBjAzOZAtF5bF++R0Bi+9c9E+p3VEr/xvj4oABtRWVJ2wlWzLbYC2rKFk5iapFhb7uZCUpO4w4Su3a5QFa2vInjYueziRoqySZd/DpstMJ8rsJ94VGizFFFZ1l0sw1ax+wfBAv5+wHs/hlnHi/ea66KBO3rgXKahvV28h+4bh5etc8RCrmiiNbfg6Oj0jQJDjdYIdW8T9YPOI9E1hih8lbfRnMWcOFJgYekfLpoy5LI525UGnlM46J1k6ekLqsn9FqvbiOOoLgqa4YqBm1i9P0ePyjkME+t+RiL8xXX+ItgOYr9G7kM64wlTJPCW8B/crmUdmGzQNC/hD/u/8wfHBS2f8u6OtQMG/+Kpk1oju8lcUZGI/4S8A6/OuktvQr2zgnbs2aADMrM37Oait/pJ3G73S7NwVT8EaK+X43c0C/fUvW2/bD/rqCNpAh9WQlz4Cj6JHwjbmwuind6aCimF1tHjXuR9FXu+g17sPT4ZkKZ6aeBG+m170XdCGn2hVM0wH1rh3VeCG2u/JFqfuGKGSoqeHeNY/icu9pEhtZDzHd7aPoaMXcWvXC9PjooBf7GM1EPacSdnon1kBobjtKSt1l15DjO5TMrJoX7VO7GotQwo+uI/u5Kop01hBXxyxyggl1/8N0ESohPJoqLDrIwvbGK5kW4B49FVPnx9CMvjZDdSsoxPAh+hx6SPe8Hj0Nx4bRs06cbtOkte/V8QSYIqjiJDleEqPrdiKlvgToZz9L29ZR/3Ln65qU1sq7q9c0SEYxIopV7TdTjFS7y76zDPFZkhzc3DjfLtJo/M1hdtt648APcZdmAIgWH6fh3eJZ0qbiPh8RStYH7I2COmnlMw4+t/B5mlhYVSgwPK2Ir736Mh+P9Bw0fF8r9Ghhs4AJzpU0RiK9d1tCsrLfK/hSRwTXhtsSB6eDWEGkO7oeEIz43mgn0sv3SrA9JNHzYkg=";
key = "2e35f242a46d67eeb74aabc37d5e5d05";

CryptoJS.AES.decrypt(atob(data).substring(16), key, {
    iv: atob(cipher).substring(0, 16),
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
});
Run Code Online (Sandbox Code Playgroud)

CryptoJS是否以某种不同的方式期望数据,密钥和初始化向量?据我所知,IV是数据中的前16个字节.

javascript ruby aes cryptojs

20
推荐指数
2
解决办法
7万
查看次数

algorithm - C#中的RijndaelManaged Class是否等同于AES加密?

我问这个问题是为了确认C#中的RijndaelManaged类是否等同于AES加密.从我读过的内容来看,RijndaelManaged是实现AES加密的首选算法.有人可以确认一下吗?

RijndaelManaged算法可以安全地用于Web项目吗?谢谢 :)

c# encryption cryptography aes

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

RijndaelManaged支持128-256位密钥,默认构造函数生成器的密钥大小是多少?

对于新的RijndaelManaged(),文档说它支持128位和最多256位的密钥.

当您实例化新的RijndaelManaged()时,它会为您创建Key和IV.

它的默认大小是128位?

c# aes rijndaelmanaged

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

我可以在.NET的CTR模式下使用AES吗?

.NET的AES不直接实现CTR.它只实现CBC,CFB,CTS,ECB和OFB.

我可以使用这些模式中的任何一种并安全地实现它们周围的CTR,还是我需要完全使用不同的库?

.net encryption aes

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

何时检查"此应用程序使用加密"框?

提交或更新应用时,您面临的一个问题是:

自上次上传此产品的二进制文件以来,您是否添加或更改了加密功能?

图片: 在此输入图像描述

我的问题是,如果我使用从<CommonCrypto/CommonCryptor.h>库中获得的加密,我是否必须对该Q进行检查?

我有一个文件,我想加密,发送到iPhone,并使用CommonCrypto在iPhone上解密.与同事交谈时,我得到了不同的回答.有些人认为,由于它是一个包含在内的公平游戏框架,其他人则表示你必须得到政府的批准.

看起来CommonCrypto支持(充其量)采用ECB密码模式的AES 128位加密.所以,这就是我计划使用的东西.

附注:我计划在github 上使用AlanQuatermain/aqtoolkit中NSData+CommonCrypto类别.这只是CommonCrypto的一个包装,仅此而已.

相关的是,如果您使用HTTPS(SSL),是否必须选中YES?请参阅进行HTTPS(TLS)连接的应用程序的iPhone加密导出合规性 - 续.我不需要https连接,但这让我感到惊讶......

encryption https aes ios commoncrypto

19
推荐指数
1
解决办法
8861
查看次数

使用openssl C进行AES(aes-cbc-128,aes-cbc-192,aes-cbc-256)加密/解密

我只想用openSSL测试这三种模式的AES:128,192和256密钥长度,但我的解密文本与我的输入不同,我不知道为什么.此外,当我传递一个巨大的输入长度(比方说1024字节)时,我的程序显示core dumped...我的输入始终是相同的,但它无关紧要,至少目前如此.下面是代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/aes.h>

int main(int argc, char **argv)
{
    int i;
    int keylength;
    printf("Give a key length [only 128 or 192 or 256!]:\n");
    scanf("%d", &keylength);

    /* generate a key with a given length */
    unsigned char aes_key[keylength];
    memset(aes_key, 0, sizeof(aes_key));
    if (!RAND_bytes(aes_key, keylength))
    {
        exit(-1);
    }
    aes_key[keylength-1] = '\0';

    int inputslength;
    printf("Give an input's length:\n");
    scanf("%d", &inputslength);

    /* generate input with a given length */
    unsigned char aes_input[inputslength+1];
    memset(aes_input, '0', sizeof(aes_input)); …
Run Code Online (Sandbox Code Playgroud)

c openssl aes

19
推荐指数
1
解决办法
5万
查看次数

如何检查OpenSSL是否支持/使用Intel AES-NI?

请告诉我,如何检查OpenSSL是否支持/使用Intel AES-NI?

openssl aes

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