标签: aes

如何安全地处理AES"密钥"和"IV"值

如果我使用AES(System.Security.Cryptography)简单地加密和解密SQL服务器中的blob或memo字段,那么我在哪里将"Key"和"IV"值存储在服务器上?(文件,Regkey,Dbase,......)

那些AES"Key"和"IV"值的保护是什么?

背景问题更多:如果"他们"攻击服务器并获得dbase ...那么他们可能也可以进入加密程序的程序(它在同一台服务器上,无法帮助它)...如果"他们"非常好,那么他们会注意到存储"Key"和"IV"值的位置......(.NET 4.5 ILSPY)并且所有内容都可以再次解密.

请指教?你们如何处理AES"Key"和"IV"值?

Ps:这不是关于pwd字段...所以,它不是关于散列...它的纯数据加密.

.net c# encryption cryptography aes

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

什么(纯)Python库用于AES 256加密?

我正在寻找一个(最好是纯粹的)python库来进行AES 256加密和解密.

该库应该支持CBC密码模式,并根据我之前的问题的答案使用PKCS7填充.

该库至少应该适用于Mac OS X(10.4)和Windows XP.理想情况下,只需将其放入我的项目的源目录中.我已经看过Josh Davis的这个,但我不确定它有多好,如果它做了所需的CBC密码模式......扫描源表明它没有

python encryption aes

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

使用AES和Base64编码进行加密和解密

我有以下加密数据的程序.

import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class Test {

    private static final String ALGORITHM = "AES";
    private static final byte[] keyValue = "ADBSJHJS12547896".getBytes();

    public static void main(String args[]) throws Exception {
        String encriptValue = encrypt("dude5");
        decrypt(encriptValue);

    }

    /**
     * @param args
     * @throws Exception
     */

    public static String encrypt(String valueToEnc) throws Exception {

        Key key = generateKey();
        Cipher c = Cipher.getInstance(ALGORITHM);
        c.init(Cipher.ENCRYPT_MODE, key);

        System.out.println("valueToEnc.getBytes().length "+valueToEnc.getBytes().length);
        byte[] encValue = c.doFinal(valueToEnc.getBytes());
        System.out.println("encValue length" + encValue.length);
        byte[] encryptedByteValue = …
Run Code Online (Sandbox Code Playgroud)

java encryption aes

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

如何修复无效的AES密钥长度?

我正在eclipse 上开展基于Web的文本加密和解密项目(遵循Struts 2)

每当我输入密码和纯文本时,我都会收到无效的AES密钥长度错误.

服务类(SymAES.java)

package com.anoncrypt.services;

import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class SymAES
{
    private static final String ALGORITHM = "AES";
    private static byte[] keyValue= new byte[] { 'T', 'h', 'i', 's', 'I', 's', 'A', 'S', 'e', 'c', 'r', 'e', 't', 'K', 'e', 'y' };

     public  String encode(String valueToEnc) throws Exception {
        Key key = new SecretKeySpec(keyValue, ALGORITHM);
        Cipher c = Cipher.getInstance(ALGORITHM);
        c.init(Cipher.ENCRYPT_MODE, key);
        byte[] encValue = c.doFinal(valueToEnc.getBytes());
        String encryptedValue = …
Run Code Online (Sandbox Code Playgroud)

java encryption aes

30
推荐指数
3
解决办法
8万
查看次数

AES加密和解密

我通过swift编写应用程序,我需要AES加密和解密功能,我从另一个.Net解决方案接收加密数据,但我找不到要做的事情.

这是我的.net加密:

 public static byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes)
    {
        byte[] encryptedBytes = null;

        byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };

        using (MemoryStream ms = new MemoryStream())
        {
            using (RijndaelManaged AES = new RijndaelManaged())
            {
                AES.KeySize = 256;
                AES.BlockSize = 128;

                var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
                AES.Key = key.GetBytes(AES.KeySize / 8);
                AES.IV = key.GetBytes(AES.BlockSize / 8);

                AES.Mode = CipherMode.CBC;

                using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(bytesToBeEncrypted, 0, …
Run Code Online (Sandbox Code Playgroud)

encryption aes ios swift cryptoswift

29
推荐指数
8
解决办法
8万
查看次数

AES加密如何传输IV

我知道独特的IV在加密时非常重要,可以防止频率分析等攻击.问题:对于AES CBC加密,最重要的是IV?有一个非常明确的答案解释了IV的重要性.

以明文形式发送IV会有任何安全漏洞吗?或者是否需要使用用于发送对称密钥的相同公钥/私钥进行加密?

如果需要加密发送IV,那么为什么不每次都生成一个新的对称密钥并将IV视为密钥的一部分?是否生成对称密钥太昂贵了?还是最小化传输的数据量?


Secret与Non-secret Initialization Vector的最佳答案如下:

典型的密钥建立协议将导致双方计算一个数据,但只有他们都知道.利用Diffie-Hellman(或其任何椭圆曲线变体),所述共享数据片段具有固定长度并且它们不能控制其值(它们两者都获得相同的看似随机的比特序列).

两个实体如何在没有共享信息的情况下导出"相同的看似随机的比特序列"?假设共享信息是加密发送的吗?并且,如果共享信息是加密发送的,为什么不直接发送加密的IV?


因为应用程序需要安全地传输对称密钥,所以将IV与密钥本身分开似乎是一种优化.或者我错过了什么?

cryptography aes initialization-vector

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

AES加密,什么是公钥和私钥?

在AES加密(.net框架)中,公钥和私钥是如何使用的?

公钥和私钥是否组合在一起形成一个完整的密钥,然后算法使用公钥+私钥来加密数据?

(以下用于示例目的的简化密钥)

例如,公钥= 12345私钥= 67890

所以生成加密结果时使用的密钥是:1234567890

encryption aes

27
推荐指数
4
解决办法
8万
查看次数

AES密钥长度错误无效

此代码提供无效的AES密钥长度错误.我怎么能纠正它?(我想要128位密钥AES加密)

package org.temp2.cod1;
import java.security.*;

import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;

public class Code1 {

    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
    String s = "9882623867";
    byte[] plaintext = s.getBytes("UTF-16");
    String s2 = "supernova";
    byte[] key = s2.getBytes("UTF-16");
    Cipher c = Cipher.getInstance("AES");
    SecretKeySpec k =  new SecretKeySpec(key, "AES");
    c.init(Cipher.ENCRYPT_MODE, k);
    byte[] encryptedData = c.doFinal(plaintext);
    System.out.println(encryptedData);
}
}
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏

java encryption aes

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

如何在Java和Objective-C(iPhone)之间使AES加密相同?

我正在加密objective-c中的字符串,并使用AES加密Java中的相同字符串,并且看到一些奇怪的问题.结果的第一部分与某个点匹配,但后来却不同,因此当我将Java的结果解码到iPhone上时,它无法对其进行解密.

我正在使用一个源代码字符串"现在然后这是什么废话.你知道吗?" 使用"1234567890123456"的键

加密的objective-c代码如下:注意:它是NSData类别,因此假设在NSData对象上调用该方法,因此'self'包含要加密的字节数据.

   - (NSData *)AESEncryptWithKey:(NSString *)key {
 char keyPtr[kCCKeySizeAES128+1]; // room for terminator (unused)
 bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)

 // fetch key data
 [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

 NSUInteger dataLength = [self length];

 //See the doc: For block ciphers, the output size will always be less than or 
 //equal to the input size plus the size of one block.
 //That's why we need to add the size of one block here
 size_t bufferSize = dataLength + …
Run Code Online (Sandbox Code Playgroud)

java iphone encryption aes objective-c

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

物理服务器转换时SQL Server 2008 Open Master Key错误

我将SQL Server数据库从一个系统复制到下一个相同的设置,但是完全不同的物理机器.我使用Norton Ghost手动恢复文件,例如,重新安装SQL Server 2008 Express后,在c:\ Program Files中找到的整个SQL Server 2008文件夹.

我的一个数据库在其中一个表列上启用了AES_256加密.我重置我的IIS7并试图运行访问数据库的应用程序,检索数据后,我收到此错误:

'/'应用程序中的服务器错误.请在执行此操作之前在数据库中创建主密钥或在会话中打开主密钥.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Data.SqlClient.SqlException:请在执行此操作之前在数据库中创建主密钥或在会话中打开主密钥.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

我已经完成了一些阅读,并找到了一些关于AES加密如何与机器密钥相关联的链接,但是如何将其复制到新系统却不知所措.或者甚至可能不是这样.

注意:我尝试删除对称密钥,证书和主密钥并重新创建它们.这消除了错误,但是通过AES_256加密的数据没有显示出来.但是,未加密的列可以执行.

任何帮助将非常感激.提前致谢!

sql encryption aes sql-server-2008

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