标签: encryption-symmetric

使用JCE/JCA从主密钥中获取秘密

有人能指出我正确的方向吗?

我想使用JCE/JCA从主密钥中获取新密钥,我该如何实现?

问候.

java cryptography encryption-symmetric pkcs#5

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

解密字符串时偶尔出现错误数据错误:System.Security.Cryptography.CryptographicException

在我的 ASP.NET WebForms 应用程序(该应用程序运行在 windows server 2008 R2、IIS 7.5 和 Runtime v4.0 集成模式应用程序池上,如果重要的话),我正在加密数据,将它放在 QueryString 上并使用System.Security.Cryptography.SymmetricAlgorithm类解密数据。但是我偶尔会在解密数据时遇到一些问题,我收到以下异常;

坏数据。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。

异常详细信息:System.Security.Cryptography.CryptographicException:错误数据。

源错误:

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

堆栈跟踪:

[加密异常:错误数据。]
System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) +33
System.Security.Cryptography.Utils._DecryptData(SafeKeyHandle hKey, Byte[] data, Int32 ib, Int32 cb, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode PaddingMode, Boolean fDone) +0
System.Security.Cryptography.CryptoAPITransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +313
System.Security.Cryptography.CryptoStream.FlushFinalBlock() +33 Cryptography35.SymmetricEncryptionUtility.DecryptData(Byte[] data, String keyFile) 在 E:\Documents\@Library\Cryptography35\Cryptography35\SymmetricEncryptionUtility.cs:124 Cryptography35.SymmetricedQueryString.Symmetricly ..ctor(String encryptedData, String keyfilename, String algorithmname) in E:\Documents\@Library\Cryptography35\Cryptography35\SymmetricQueryString\SymmetriclyEncryptedQueryString.cs:67 WebForms.Web.Views.purchase_a.GetSymmetriclyEncryptedQueryString() 在 E:\Documents\ WebForms.Web\Views\purchase-a.aspx.cs:35 WebForms.Web.Views.purchase_a.Page_Load(Object sender, …

.net asp.net encryption cryptography encryption-symmetric

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

使用BouncyCastle进行AES加密:AESEngine,AESFastEngine还是AESLightEngine?

我想移植这个简单的JAVA示例......

使用J2ME中的Bouncycastle示例进行AES加密/解密

...到C#并有以下两个问题:

  1. 据我了解,JAVA示例使用AESEngine进行加密/解密操作.AESEngine和AESFastEngine和AESLightEngine有什么区别?遗憾的是,我不理解文档中提供的信息:http://www.bouncycastle.org/docs/docs1.6/index.html

  2. 我想为我加密的每个文件使用新的加密密钥.我应该使用哪种分组密码操作模式:AES.CBC,AES.CFB,AES.ECB或AES.OFB http://www.bouncycastle.org/docs/docs1.6/index.html

  3. 我的假设是正确的,在我的情况下,我不必使用iv/salt(这意味着我必须使用静态iv?)因为我使用AES.KeyGen128()进行密钥生成并且只使用一次?
    http://www.bouncycastle.org/docs/docs1.6/index.html

希望我的问题不会造成太多的混乱;-)但我感谢你能给我的每一个答案,澄清或反馈.

麦克风

c# encryption bouncycastle aes encryption-symmetric

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

Python AES实现的区别

我正在比较pycryptocryptography.io库中的Python实现.

from cryptography.hazmat.primitives.ciphers import Cipher, modes, algorithms
from cryptography.hazmat.backends import default_backend  # http://cryptography.io
from Crypto.Cipher import AES  # http://pycrypto.org

key = b'Sixteen byte key'
iv = b'Sixteen byte ivv'
cipher1 = AES.new(key, AES.MODE_CFB, iv)
cipher2 = Cipher(algorithms.AES(key), modes.CFB(iv), default_backend())

plaintext = b"Plaintext"

print(cipher1.encrypt(plaintext))
print(cipher1.decrypt(plaintext))
print(cipher2.encryptor().update(plaintext))
print(cipher2.decryptor().update(plaintext))
Run Code Online (Sandbox Code Playgroud)

MWE打印:

b'\xe4\xb4\xeb\xe3Si\x9ap\xee'
b'7\xda\x98\xee\x05\xe4\xa0\xc7,'
b'\xe4"\xd4mo\xa3;\xa9\xe0'
b'\xe4"\xd4mo\xa3;\xa9\xe0'
Run Code Online (Sandbox Code Playgroud)

为什么输出不同?

python encryption cryptography encryption-symmetric pycrypto

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

生成强大的RSA密钥的提示

是否有任何文档,包括生成强大RSA密钥的技巧?

我的意思不仅是“将XXX实用程序与-X标志一起使用”。

我的意思是理论上有一些规则。例如,模块n不应小于1024位,依此类推。

有人可以告诉我吗?

cryptography rsa symmetric-key encryption-symmetric

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

如何在Python中解密AWS Ruby客户端加密

AWS的S3 SDK for Ruby允许对文件进行客户端("信封")加密.它是客户端密钥的AES CBC/ECB加密的组合,其中包络密钥和初始化向量存储在元数据中.

我有一个Ruby开发人员,它已经加密了S3存储桶中的各种文件,我需要使用Python检索和解密.Python S3 AWS SDK目前没有此客户端功能.

假设使用encryption_keyRuby bucket.writeS3 API 的参数加密文件:

#!/usr/bin/ruby
# coding: utf-8

require 'aws-sdk'
require 'openssl'

access_key = '<aws_access_key>'
secret_access_key = '<secret_access_key>'
encryption_key = "passwordpassword"

s3 = AWS::S3.new
storage_host = "our_bucket"
storage_path = "prod/master_report/test.txt"
bucket_obj = s3.buckets[storage_host].objects[storage_path]
bucket_obj.write(file: 'test.txt', encryption_key: encryption_key)
Run Code Online (Sandbox Code Playgroud)

有没有办法用Python解密文件而不是使用Ruby SDK?

ruby python amazon-s3 encryption-symmetric aws-sdk

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

Best way to search encrypted data inside MySQL

I am encrypting using PHP before saving the encrypted data to MySQL. I am convinced this is a better way in the long run vs using MySQL's AES_* functions.

My question now is, is there an efficient way to search encrypted data aside from storing a searchable hashed version of the data? E.g., Two columns per data: first_name_encrypted, first_name_hashed.

$hashed_search = myhash('John');    
$q = "SELECT * FROM table WHERE first_name_hashed = '$hashed_search'";
Run Code Online (Sandbox Code Playgroud)

This is what I do now, is there …

php mysql encryption encryption-symmetric

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

加密 JWT 安全令牌支持的算法

我正在尝试使用以下代码段对我的 JWt 进行签名和编码:

var claims = new Claim[] { new SomeClaimes() };
var scKey = Encoding.UTF8.GetBytes("SOME KEY");
var ecKey = Encoding.UTF8.GetBytes("SOME OTHER KEY");
var tokenDescriptor = new SecurityTokenDescriptor {
    Subject = new ClaimsIdentity(claims),
    SigningCredentials = new SigningCredentials(
        new SymmetricSecurityKey(
            scKey),
            SecurityAlgorithms.HmacSha512),
    EncryptingCredentials = new EncryptingCredentials(
        new SymmetricSecurityKey(
            ecKey),
            // I tryied all possible combination of algorithms here:
            SecurityAlgorithms.XXXX,
            SecurityAlgorithms.YYYY), 
    Issuer = "My Jwt Issuer",
    Audience = "My Jwt Audience",
    IssuedAt = DateTime.UtcNow,
    Expires = DateTime.Now.AddDays(7),
};
var tokenHandler = new …
Run Code Online (Sandbox Code Playgroud)

c# encryption-symmetric jwt .net-core netcoreapp2.1

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

如何生成难以猜测的推荐/优惠券代码?

我很难提出一种可以创建简短(8个字符)引荐代码的算法。我想使用一种易于记忆的模式,在该模式中不可能在代码中出现令人反感的单词。我也不想让任何字母与数字混淆-所以不要1,l,0和O。我提出的模式是aa22aa22。此模式基本上是两个字母字符,然后是两个数字字符,然后是两个字母字符,然后是两个数字字符。字母字符均为小写。这种模式支持超过40亿种可能的代码。

现在开始棘手的部分。我需要将生成的代码存储在Salesforce中。我认为这需要以非随机的方式完成,因为如果我随机进行,则必须检查是否已经生成了代码。然后,这会进入Salesforce对您施加的限制条件限制。如果您不熟悉调控器限制,则基本上意味着您查询数据库的次数过多或进程运行的时间过长,基础系统会抛出调控器限制错误。随机代码的创建带来了不确定性,即查找与先前创建的代码不冲突的代码需要进行多少次查询。因此,现在基本上可以归结为创建保证永不重复的代码,这意味着需要按顺序创建它们。顺序方法的问题在于代码易于猜测。

是的,我可以有一个非Salesforce数据存储,它可以作为记录的来源,并采用随机方法进行冲突检查,但是我想看看全球社区是否有任何可行的想法。我试图找到一种弱对称加密算法,该算法可以产生8个字符的密码,但到目前为止我还没有运气。

encryption-symmetric

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

在 Python 中使用 Fernet 进行对称加密 - 主密码用例

我一直在尝试了解对称加密的工作原理以及如何将其集成到我的 CLI 应用程序中,但我遇到了一些我将在下面描述的问题。

我的用例如下:

  • 我有一个CLI应用程序(SQLAlchemy+ click+ Python 3.8),这将是一个非常简单的密码管理器(自用)。

  • 开始时,我想向用户询问主密码,以便他能够从数据库中检索任何信息。如果用户还没有主密码,我会请他创建一个。我希望所有数据都使用相同的主密钥进行加密。

为了完成上述所有工作,我认为对称加密是最合适的,因此想到了Fernet,所以我开始编写一些代码:

import base64

from cryptography.fernet import Fernet, InvalidToken
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC


def generate_key_derivation(salt, master_password):
    kdf = PBKDF2HMAC(
        algorithm=hashes.SHA256(),
        length=32,
        salt=salt,
        iterations=100000,
        backend=default_backend()
    )
    key = base64.urlsafe_b64encode(kdf.derive(master_password.encode()))
    return key


def encrypt(key, value_to_encrypt):
    f = Fernet(key)
    encrypted_key = f.encrypt(value_to_encrypt.encode())
    return encrypted_key


def decrypt(key, encrypted_key):
    f = Fernet(key)
    try:
        return f.decrypt(encrypted_key)
    except InvalidToken:
        return b''
Run Code Online (Sandbox Code Playgroud)

现在,我有点试图从文档中理解:

在这个方案中,盐必须存储在一个可检索的位置,以便将来从密码中导出相同的密钥。 …

python encryption sqlalchemy encryption-symmetric

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