Tag: 加密

非常简单的加密程序错误

我正在创建一个程序,它将文件作为输入并输出每行的解密密码。 该文件包含三行加密密码。 我保证密码解密为4个字母的单词。 鉴于我已经创建了字母的char []。 我在使用LOW LEVEL IO逐行读取文件并将生成的密码放入新文件时遇到问题。 任何和所有的建议表示赞赏! 这是我到目前为止的代码: #include #include #include #include #include #include #include #define BUFFER_SIZE 1024 int main(void) { int f = open(“pass.txt”, O_RDONLY); if (f < 0) return 0; char buf[1024]; while (my_fgets(buf, sizeof(buf), f)) printf("%s\n", buf); close(f); const char *const pass = "$1$6gMKIopE$I.zkP2EvrXHDmApzYoV.B."; char *result; int ok; char guess[] […]

使用Blowfish加密和解密邮件

以下是加密和解密消息的基本代码: #include #include #include //gcc cryptage.c -o cryptage -lcrypto int main(){ BF_KEY *key = malloc(sizeof(BF_KEY)); unsigned char *crypt_key = “Key of encryption”; const unsigned char *in = “Message to encrypt”; int len = strlen(crypt_key); unsigned char *out = malloc(sizeof(char)*len); unsigned char *result = malloc(sizeof(char)*len); //Defining encryption key BF_set_key(key, len, crypt_key); //Encryption BF_ecb_encrypt(in, out, key, BF_ENCRYPT); […]

使用AES-128 / CBC时,EVP_DecryptFinal_ex中的间歇性解密失败

我正在使用此处的EVP库: https : //www.openssl.org/docs/manmaster/crypto/EVP_EncryptInit.html 这是我的两个加密和解密function: 我正在尝试使用AES 128 CBC加密字符串。 该字符串的格式通常为word1 word2 word3 char* encrypt(char *s, char *key) { unsigned char iv[16] = {[0 … 15 ] = 0}; unsigned char outbuf[1024] = {[0 … 1023] = 0}; int outlen1, outlen2; EVP_CIPHER_CTX ctx; EVP_CIPHER_CTX_init(&ctx); EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv); if (EVP_EncryptUpdate(&ctx, outbuf, &outlen1, s, strlen(s)) == 1) […]

C – 使用CBC(密码块链接)模式的OpenSSL加密

我正在使用OpenSSL的 C-API,但我对如何在OpenSSL中使用IV ( 初始化向量 )感到困惑。 说,我有 plaintext.txt file = “This is a top secret.” Key = “example#########” IV = 010203040506070809000a0b0c0d0e0f 当我使用OpenSSL AES-128-CBC加密时,我应该得到: e5accdb667e8e569b1b34f423508c15422631198454e104ceb658f5918800c22 当我尝试这个时(密钥转换为hex),这是真的: openssl enc -aes-128-cbc -e -in plaintext.txt -out ciphertext.bin -K 6578616d706c65232323232323232323 -iv 010203040506070809000a0b0c0d0e0f 我明白了: xxd -p ciphertext.bin e5accdb667e8e569b1b34f423508c15422631198454e104ceb658f5918800c22 但是我用C得到了不同的密文 char plaintext[] = “This is a top secret.”; unsigned char iv[16] = { […]

是否有库或其他方式进行128位数学运算?

我正在编写一个加密应用程序,需要使用128位整数。 除了标准的加,减,乘,除和比较之外,我还需要一个幂和模函数。 有没有人知道可以执行此操作的库或其他实现? 如果不是128位,是否有64位选项可用?

使用KEY的Openssl / libcrypto AES 128编码

我正在使用AES-128-ECB加密某个字符串,然后将结果保存在文件中,例如test.enc这是我执行加密的方法: int do_crypt(char *outfile) { unsigned char outbuf[1024]; int outlen, tmplen; unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; char intext[] = “Some Text”; EVP_CIPHER_CTX ctx; FILE *out; EVP_CIPHER_CTX_init(&ctx); EVP_EncryptInit_ex(&ctx, EVP_aes_128_ecb(), NULL, key, NULL); if(!EVP_EncryptUpdate(&ctx, outbuf, &outlen, intext, strlen(intext))) { /* Error */ return 0; } /* Buffer passed to EVP_EncryptFinal() must be after data just * encrypted […]

如何为RSA / AES加密生成密码

我想通过套接字发送使用RSA加密的大数据。 我用openssl和c 。 由于RSA解密速度很慢,我首先使用通用和直接的方式使用AES加密数据,然后使用RSA加密使用的AES密码。 然后我通过套接字发送AES加密数据和RSA加密密码,并以相反的方式进行加密。 我使用AES进行AES加密: EVP_CIPHER_CTX en; unsigned char password[65]; int i, x = 0; unsigned char key[32], iv[32]; unsigned char *ciphertext; i = dataLength + AES_BLOCK_SIZE -1; ciphertext = (unsigned char *)malloc(i); EVP_CIPHER_CTX_init(&en); EVP_EncryptInit_ex(&en, EVP_aes_256_cbc(), NULL, key, iv); EVP_EncryptUpdate(&en, ciphertext, &i, (unsigned char*)data, dataLength); EVP_EncryptFinal_ex(&en, ciphertext+i, &x); 但是如何安全地创建key和iv ? 现在我使用以下function: EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha1(), salt, […]

在解密程序中使用带负数的模数的问题

我对C很陌生,最近一直致力于制作一个简单的加密/解密程序。 我设法使加密很好,但我已经解密了。 相关代码如下: 加密(其中asciinum是字母的ascii值,k是要移位的“vigenere”键)。 //shifts lowercase letters by key if (asciinum >= 97 && asciinum = 65 && asciinum <= 91) { f = p % keylen; k = key[f]; asciinum = (asciinum – 65) + k; asciinum = (asciinum % 26) + 65; letterc = (char) asciinum; cipher[j] = letterc; p++; } 我想使用类似的模型来解密(使用相同的密钥),但是当asciinum为负时,我用来包裹26个字符的模数方法不起作用,就像从a中减去ak为5的情况一样(即0)。 解密尝试…… […]

使用c进行rsa加密解密

我正在尝试使用Open SSL编写RSA加密和解密的C代码。 但我无法这样做。 我用谷歌搜索了它,但无论我从互联网上得到什么代码,它都是我的头脑。 mainfunction在这里,我从堆栈溢出。 我尝试过使用它……但它不起作用。 可能是我的坏事。 encrypt(FILE *rsa_Pkey_fole,FILE *in_file,FILE *out_file){ } int main(int argc, char *argv[]) { FILE *rsa_pkey_file, *infile; int rv; if (argc < 2) { fprintf(stderr, "Usage: %s \n”, argv[0]); exit(1); } rsa_pkey_file = fopen(argv[1], “rb”); infile = fopen(argv[2], “w”); if (!rsa_pkey_file) { perror(argv[1]); fprintf(stderr, “Error loading PEM RSA Public Key File.\n”); […]

使用OpenSSL生成RSA公钥/私钥?

主要的问题是我对C很新,OpenSSL文档对我来说还不够清楚,我尝试过用RS读取和写入一个pem文件的rsa键 ,但我不太明白。 例如, create_rsa_key()函数如何创建私有和公共? pCipher来自哪里? 那个pcszPassphrase什么pcszPassphrase呢? 我会解释好像它是某种伪代码,这就是我想做的事情,粗体部分是那些我不知道怎么做的部分: 生成私钥和公钥作为hex缓冲区(客户端) 安全地将公钥发送到另一个端点(客户端) 使用AES256 CBC(服务器)使用随机256位密码加密某些数据 使用公钥(服务器)加密密码 将加密数据发送到客户端(服务器) 使用私钥(客户端)解密加密的256位密码 解密文件 基本上我知道如何处理AES加密/解密和通信协议,它们已经实现了,我的问题是RSA,我需要hex格式而不是base64或pem,因为我正在使用套接字并发送和存储为二进制数据。