天道酬勤,学无止境

encryption

What encryption mechanism is used in CouchDB?

问题 回答1 CouchDB 不加密静态数据(密码除外,通过 PBKDF2 单向哈希)。 它确实允许使用 HTTPS 对传输中的数据进行加密,但对于静态加密,您的选择是: 设备/文件系统级加密。 这由您的操作系统处理,并且对 CouchDB(和所有其他应用程序)完全不可见。 应用程序级加密。 您可以让应用程序在将数据编组为 JSON 以存储在 CouchDB 中之前对其进行加密。 crypto-pouch 插件就是一个例子,它适用于 PouchDB(注意:我从未使用过它,所以不能保证它的用处)。

2022-05-17 04:39:10    分类:技术分享    encryption   couchdb

AES256 String encryption on PHP and decryption on iPhone

问题 我的 php 代码上有这个: $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $key = "bla"; $text = json_encode($rows); $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv) print base64_encode($crypttext); 而这个是iphone: NSString *response = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.bla.com/myinfo.php"] encoding:NSUTF8StringEncoding error:&error]; response = [[NSData base64DataFromString:response] AESDecryptWithPassphrase:@"bla"]; response = [[[NSString alloc] initWithData:response

2022-05-17 04:22:03    分类:技术分享    php   iphone   encryption   aes

AES Key and IV generate with 16 character length

问题 我正在寻找如何在 vb.net 中生成 AES 密钥和 IV。 http://programmers-en.high-way.info/vb/aes.html 如上链接,有 AesIV 和 AesKey 的声明。 但我不想对 AesIV 和 AesKey 使用硬代码。 Private Const AesIV As String = "!QAZ2WSX#EDC4RFV" Private Const AesKey As String = "5TGB&YHN7UJM(IK<" 我想要做的是我想像上面的例子一样自动生成随机密钥和 IV 完全相同的 16 个字符。 请帮助我的人。 谢谢... 回答1 使用 RNGCryptoServiceProvider 生成加密强序列。 Imports System.Security.Cryptography Public Function GenerateKey(ByVal Length As Integer) As Byte() Dim ReturnArray(Length - 1) As Byte Using RNG As New RNGCryptoServiceProvider RNG.GetBytes(ReturnArray) End Using Return ReturnArray End Function 示例用法: AES.Key =

2022-05-16 07:07:03    分类:技术分享    vb.net   encryption   cryptography   aes

AES encrypt string in Delphi (10 Seattle) with DCrypt, decrypt with PHP/OpenSSL

问题 在 Delphi 中使用 DCrypt 给出这段代码: Uses DCPcrypt2, DCPblockciphers, DCPrijndael, DCPbase64; procedure TForm1.Button1Click(Sender: TObject); var Cipher : TDCP_rijndael; ss, k, Data, Key, IV : Ansistring; const KeySize = 32; // 32 bytes = 256 bits BlockSize = 16; // 16 bytes = 128 bits // IV begin key := '12345678901234567890123456789012'; iv := '1234567890123456'; Data := 'thisis128bitstxt'; Cipher := TDCP_rijndael.Create(nil); Cipher.Init(Key[1],128,@IV[1]); Cipher.EncryptCBC(Data[1],Data[1],Length(Data)); Cipher.Free; Data := DCPBase64.Base64EncodeStr(Data); Memo1.Lines.Add(Data); end; 我得到以下信息

2022-05-15 18:18:04    分类:技术分享    delphi   encryption   openssl   aes

developing for android, secure data transfer best-practice

问题 我正在寻找将数据从远程服务器安全发送到 android 设备的最佳实践。 这些数据需要对任何嗅探网络的人都是安全的,我希望 HTTPS 能够处理这么多。 我真正担心的是这个... 数据将由应用程序使用,但对用户隐藏的真实内容。 把它想象成用户正在参加考试,并且应用程序已经下载了所有可能的答案(并且知道哪个是正确的)。 显然,您不希望用户能够嗅探流量以发现哪个答案是正确的,也不希望用户能够对应用程序进行逆向工程并找到用于解密数据的超级机密解密密钥。 这可能是一项不可能完成的任务,但是有什么好的方法可以真正锁定这种敏感数据吗? 我知道这些天没有什么是安全的,即使是蓝光解密密钥。 但也许有人可以指出我正确的方向。 回答1 如果您没有对设备的物理控制,则无法使其 100% 安全。 干净利落。 HTTPS 将帮助您进行传输,但如果您将数据保存在本地机器上(即使是临时/乱码格式),迟早有人会尝试获取它。 我建议您将(下一个)问题和可能的答案发送给客户端,然后将选择的答案发送回服务器,让服务器决定它是对还是错。 冲洗并重复,直到所有问题都完成,然后显示最终分数。 回答2 保护设备上存在的信息确实是一项不可能完成的任务。 你真正希望做的就是让它比别人想打扰的更难。 但是,如果您的字面意思是测验,并且不想将答案发送到服务器进行验证,那么我想到您可以使用单向哈希函数

2022-05-15 15:19:04    分类:技术分享    android   security   encryption

Scala MurmurHash3 library not matching Python mmh3 library

问题 我需要在 Python 和 Scala 中使用 MurmurHash 字符串。 然而,他们给出了非常不同的结果。 Scala 的内置MurmurHash3库似乎没有提供与我尝试过的任何其他库(包括在线库)相同的结果。 奇怪的是它似乎匹配单个字符而不是多个字符。 这里有些例子: Python: mmh3.hash('string', 0) res: -1390314837 斯卡拉: MurmurHash3.stringHash("string", 0) res: 379569354 我已经尝试过使用有符号和无符号整数,因为我知道 Java 已经签名并且 python 正在包装的 C 实现正在使用无符号。 但即使使用 NumPy 转换为带符号的 int 也无济于事。 这个网站似乎同意python实现: http://murmurhash.shorelabs.com/ 关于这里可能发生什么的任何想法? 回答1 Scala 使用编码为 UTF-16 的 Java 字符串。 它们一次打包两个到Int中; Python 使用char* (8 位),因此一次包含四个字符而不是两个。 编辑:Scala 还按 MSB 顺序打包字符,即(s.charAt(i) << 16) | (s.charAt(i+1)) (s.charAt(i) << 16) | (s.charAt(i+1)) 。

2022-05-14 21:38:19    分类:技术分享    python   scala   encryption   hash   murmurhash

What is the right way to create a SSECustomerKey for boto3 file encryption in python?

问题 我在我的 django 应用程序中使用 boto3 将媒体上传到 S3。 但是我无法使用“使用客户提供的加密密钥的服务器端加密”来加密服务器上的文件 我正在使用 boto3 的 object.put() api 来上传文件并指定加密密钥。 但我收到以下错误。 “计算出的密钥 MD5 哈希值与提供的哈希值不匹配。” 我不确定如何创建将在服务器端匹配的密钥的 md5。 这是我的代码。 password = "32characterslongpassphraseneeded".encode('utf-8') encryption_key = hashlib.md5(password).hexdigest() encryption_key_md5 = hashlib.md5(encryption_key.encode('utf-8')).hexdigest() import boto3 s3 = boto3.resource('s3') key = s3.Object(bucket_name, key_name) kwargs = { 'SSECustomerAlgorithm': 'AES256', 'SSECustomerKey': encryption_key, 'SSECustomerKeyMD5': encryption_key_md5, 'ContentType'

2022-05-14 10:51:08    分类:技术分享    python   encryption   amazon-s3   boto   boto3

Encrypt django model field using python 3.5

问题 回答1 import base64 from django.db.models import CharField from cryptography.fernet import Fernet from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC from core import settings class SecureString(CharField): """Custom Encrypted Field""" salt = bytes(settings.SECURE_STRING_SALT, encoding="raw_unicode_escape") kdf = PBKDF2HMAC(algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=default_backend()) key = base64.urlsafe_b64encode(kdf.derive(settings.SECRET

2022-05-14 01:43:04    分类:技术分享    django   python-3.x   encryption   django-models

Is there an encryption technique that could turn an 8-digit number into something 10 or 11 digits or less?

问题 我见过的许多加密技术可以很容易地加密一个简单的 8 位数字,例如“12345678”,但结果通常是“8745b34097af8bc9de087e98deb8707aac8797d097f”(虚构,但你明白了)。 有没有办法加密这个 8 位数字,但得到的加密值是否相同或至少只是一个稍长的数字? 一个理想的目标是最终得到一个 10 位或更少的数字。 这是否可能,同时仍保持相当强大的加密? 更新:我没有使输出足够清晰 - 我想要一个 8 位数字变成一个 8 位数字,而不是 8 个字节。 回答1 这里很大程度上取决于您对“公钥加密”标签的重视程度。 你真的想要公钥加密,还是只是考虑到这种可能性? 如果您愿意使用对称加密,从 8 个字节的输入产生 8 个字节的输出非常容易:只需在 ECB(电子密码本)模式下运行 3DES,这就是您将得到的。 ECB 的主要弱点是给定的输入总是会产生相同的结果,因此如果您的输入可能重复,攻击者将能够看到这种重复,并且可能能够注意到“加密值 X 导致操作 Y”的模式",即使他们根本不能/根本不会破坏加密本身。 如果你能接受,3DES/ECB 可能是你的答案。 如果你不能忍受,CFB 模式下的 3DES 可能是次佳。 这将从 8 个字节的输入产生 16 个字节的输出(请注意,它通常不会将输入大小加倍,而是在输入大小上增加 8 个字节)。 3DES

2022-05-13 07:59:10    分类:技术分享    security   encryption

Encryption/Decryption - Python GCSE [duplicate]

问题 这个问题在这里已经有了答案: 字母表中的加密和解密 - Python GCSE 1 个答案 6年前关闭。 我目前正在尝试为学校编写一个程序,以加密和解密输入的消息。 我需要加密或解密的消息仅在字母表中没有其他符号或密钥,例如,使用消息货车加密的输入偏移量为 5,我希望它输出“afs”。 有人可以帮忙吗? 这是我目前的代码: def find_offset(): offset = int(input("Enter an offset: ")) if offset > 25 or offset < 0: print("Invalid offset, please enter another offset: ") find_offset() else: print("Okay") encrypt_fun(offset) def encrypt_fun(offset): choice = '' while choice != '3': choice = input("\nDo you want to encrypt or decrypt the message?\nEnter 1 to Encrypt, 2 to Decrypt, 3 to Exit Program: ") if choice == '1': message = input("\nEnter the message

2022-05-13 02:30:48    分类:技术分享    python   encryption