Tag: 加密

没有依赖项的小型RSA或DSA库

RSA或DSA是否有一个小型库,没有GMP或OpenSSL等依赖项? (用C或Asm编写)

C分段fault-char指针

我需要帮助找出我在这里遇到分段错误的原因。 我已经过去了,我认为我的指针做错了,但我可以搞清楚是什么。 我的计划: #include #include void encrypt(char* c); //characters are shifted by 175 int main(){ char* a; *a = ‘a’; /*SEGMENTATION FAULT HERE!*/ encrypt(a); printf(“test:%c/n”,*a); return 0; }; void encrypt(char* c){ char* result; int i=(int)(*c); i+=175; if(i>255) { i-=256; } *c=(char)i; };

C解密声明

好吧,这对我来说太过分了。 你怎么看这些声明? char *(*(**myCBT[][10])())[]; 请注意:我并没有特别要求这个例子,但是如果像我这样的初学者面临这样一个棘手的难题,一般的经验法则。

加密数据为字符串

我是加密和C语言的新手,所以这可能是一个明显的问题,但我找不到解决问题的方法。 我在C上创建一个应用程序,并在Linux中使用openssl进行加密。 我从这个url得到了一个C代码示例,它允许使用SHA加密和解密字符串: http : //wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption #include #include #include #include int main(int arc, char *argv[]) { unsigned char *key = “01234567890123456789012345678901”; unsigned char *iv = “01234567890123456”; /* Message to be encrypted */ unsigned char *plaintext = “The quick brown fox jumps over the lazy dog”; unsigned char ciphertext[128]; unsigned char decryptedtext[128]; int decryptedtext_len, ciphertext_len; ERR_load_crypto_strings(); […]

对“crypt”的未定义引用

我正在使用下面的代码,我在网络的某个地方找到了,当我尝试构建它时,我收到了一个错误。 编译没问题。 这是错误: /tmp/ccCnp11F.o: In function `main’: crypt.c:(.text+0xf1): undefined reference to `crypt’ collect2: ld returned 1 exit status 这是代码: #include #include #include #include int main() { unsigned long seed[2]; char salt[] = “$1$……..”; const char *const seedchars = “./0123456789ABCDEFGHIJKLMNOPQRST” “UVWXYZabcdefghijklmnopqrstuvwxyz”; char *password; int i; /* Generate a (not very) random seed. You should do it […]

如何处理C中的大整数

我想实现加密算法。 所以我需要一个合适的数据类型来处理具有大量数字的整数。 许多最新的语言,如Java,Python和Ruby提供了本机方法。 但是,我正在用C编程,我想知道在那里实现基本操作的最佳方式和最简单的方法是什么。 我想写它没有任何外部库。 我想到了两个选择: 使用char数组(如字符串,这对加密/解密密钥有用) 使用位数组(我不知道怎么做,但我认为这将取决于编译器) 你会怎么做?

我的加密安全是openPGP / SMIME吗?

我正在尝试在更大的项目中编写一个简单的文件加密/解密。 由于许可证问题,我想避免使用libgpgme。 openPGP标准是复杂的项目时间框架。 我想用openssl做我的加密东西。 现在我实现了以下内容: 加密(pseude代码): RAND_bytes(aes_key) RAND_bytes(aes_salt) EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha1(), (const unsigned char *)aes_salt, aes_key, sizeof(aes_key), 5, key, iv); 然后我aes256我的数据 EVP_EncryptInit_ex(&e_ctx, EVP_aes_256_cbc(), NULL, key, iv); 然后我用RSA加密密钥和iv RSA_public_encrypt(flen, (unsigned char *)key, encryptedKey, rsa, RSA_PKCS1_PADDING ); RSA_public_encrypt(flen, (unsigned char *)iv, encryptedIV, rsa, RSA_PKCS1_PADDING ); 然后我将128位密钥和iv保存在我文件的“顶部”(256Bytes标题)。 解密: – >读取前256字节(拆分为密钥和iv) – >解密密钥和iv用本地RSA私钥(当然RSA私钥不在文件中) – >使用密钥和iv解密数据 我对那段代码安全吗?

加密:RSA算法

我正在实现加密和解密的RSA算法,如下所示: http://www.di-mgt.com.au/rsa_alg.html 但无法理解密钥生成中的随机素数生成部分。 所以我将两个素数作为用户的输入。 我也很难产生e。 所以我让它保持不变(e = 17) 一些素数输入在linux下的gcc中正常工作(即正确编码和解码),但在windows下的devcpp中没有。 (例如53,61) 这是密钥生成代码: /* Generates private and public keys and saves into two separate files */ void keygen() { int p,q,phi,d,e,n,s; printf(“\n Enter two prime numbers: “); scanf(“%d%d”,&p,&q); n = p*q; phi=(p-1)*(q-1); e=17; // selec d such that d*e = 1+ k*phi for some integer k. d […]

如何使用RSA加密数据,SHA-256作为哈希函数,MGF1作为掩码生成函数?

我正在做一些密码学实验。 现在我有接收器的公钥,我想加密一些数据并传递给接收器。 我想使用RSAES-OAEP算法。 SHA-256作为哈希函数,MGF1作为掩码生成函数。 我想用openssl做这个。 我找到了一个带有此函数的函数RSA_public_encrypt() ,我们可以指定填充。 其中一个填充选项是 RSA_PKCS1_OAEP_PADDING EME-OAEP,如PKCS#1 v2.0中定义的SHA-1,MGF1。 他们正在使用sha-1。 我想重新配置函数使用SHA256作为散列函数和MGF1作为散列函数。 我该怎么做 ?

在OpenSSL中使用ECDSA签名消息

在以编程方式在OpenSSL中使用ECDSA时,如何设置用于签名消息的私钥? 我有以下代码: static int create_signature(unsigned char* hash) { EC_KEY *eckey=NULL; EC_GROUP *ecgroup=NULL; EVP_PKEY *evpkey=NULL; unsigned char *signature=NULL; point_conversion_form_t form = POINT_CONVERSION_UNCOMPRESSED; int signature_size, block_size; unsigned char * block=NULL; ecgroup = get_ec_group_192(); EC_GROUP_set_asn1_flag(ecgroup, OPENSSL_EC_NAMED_CURVE); EC_GROUP_set_point_conversion_form(ecgroup, form); eckey=EC_KEY_new(); EC_KEY_set_group(eckey,ecgroup); EC_KEY_generate_key(eckey); evpkey=EVP_PKEY_new(); EVP_PKEY_assign_EC_KEY(evpkey,eckey); signature=OPENSSL_malloc(EVP_PKEY_size(evpkey)); ECDSA_sign(0, hash, sizeof(hash), signature, &signature_size, eckey); printf(“%s”, signature); return 0; } 函数get_ec_group_192()是通过运行openssl ecparam -C […]