Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main() {
- ERR_load_RSA_strings();
- unsigned char md5hash[32];
- unsigned char MD5Digest[16];
- char *testString = "TEST_TEST_TEST";
- MD5_CTX context;
- MD5_Init(&context);
- MD5_Update(&context, testString, strlen(testString));
- MD5_Final(MD5Digest, &context);
- printf("MD5 Hash: ");
- for (int i = 0; i < 16; ++i) {
- printf("0x%02x ", MD5Digest[i]);
- }
- printf("\n\n");
- FILE *publicFile = fopen("public.pem", "r");
- RSA *publicRsa = PEM_read_RSAPublicKey(publicFile, NULL, NULL, NULL);
- FILE *privateFile = fopen("private.pem", "r");
- RSA *privateRsa = PEM_read_RSAPrivateKey(privateFile, NULL, NULL, NULL);
- unsigned char *target = malloc(512);
- int len = RSA_private_encrypt(16, MD5Digest, target, privateRsa, 1);
- printf("Encrypted len: %i\n", len);
- for (int i = 0; i < 256; i++) {
- printf("%02x", target[i]);
- }
- printf("\n");
- unsigned char decrypt[64];
- memset(decrypt, 0, 64);
- len = RSA_public_decrypt(256, target, decrypt, publicRsa, 1);
- printf("Decrypted len: %i\n", len);
- }
- OUTPUT:
- MD5 Hash: 0x2b 0x7a 0x26 0x01 0xbe 0xa0 0xa3 0x40 0x25 0x84 0x66 0x07 0xac 0x87 0x89 0x70
- Encrypted len: 256
- 8e9dbfb6ef5f2ebe2c9a7af4b1763fb527c6f9e449d0eeebc94d0d2fda155c9106f2096cf0a05178da482df002f11f9a2d05badc770b66dbb460d70f0acc3d9e3975bae50939444c3f9a9f2013456c798026daf854ffd4f70c69f6dac3bc7458c76fe74a1d798b350f68351884e9311d0c89098ff18955722251f88fafc4a7e5bee7ef16f58fb0f6e702ceb8632a3da340b5ebfe3e48d120558dca697a38d0423c91e298fcf618f0ed6263a68df4778b04cce0660c5de7e1fdb3c96218cef0a8f824cf0641154ccac86927408ed7d2aa11fbd584ccfb5bd839de73000811a652edc0968838b0a4c37bc6b615fcd416e850b645092db92d9926e3f9791efc69bc
- Decrypted len: 16
- -----%<-------%<-------%<-------%<-------%<-------%<-------%<-------%<--
- # Generate the License
- private_key_filename = 'private.pem'
- private_key_file = open(private_key_filename, 'rb')
- private_key = RSA.importKey(private_key_file.read())
- private_key_file.close()
- from Crypto.Signature import PKCS1_v1_5
- from Crypto.Hash import MD5, SHA256
- test = 'TEST_TEST_TEST'
- md5 = MD5.new(test.encode())
- print("MD5:", md5.hexdigest())
- h = SHA256.new(test.encode())
- signature = PKCS1_v1_5.new(private_key).sign(h)
- print(signature.hex())
- OUTPUT:
- MD5: 2b7a2601bea0a34025846607ac878970
- 8573d0d098d20b8f42302395a9fd89fbdaf20a5e36482a9561a8d6914563fc7190891c9cac42887291a6fc7f5d36faee6da985af3a0827440e9b9d0b99222a79ac83eae3523756affd7b7d57431c113cfce2ef5913f5cd55b7f1b52e13e6cb7eb8c1bf28d32978c0689a36e4f05159c241828970836a03647c4813ba47c3d7a7936cab5885372f923807e363ee555b8dacc3d49093939a25993c401bd77c3fd4f4f88b1dca61a966fd49ce9becce630eb808a39a1d120e246d45c00218f87c28c88a8c2eb245f74d3da2ccbd3c7eaf2fac627cf0f56ef7df4c0d7e562bf3d9314c452a64c2420499ecc35372e09c2bce59d7c4ad1a52eb1223b66c9b04c52fac
- -----%<-------%<-------%<-------%<-------%<-------%<-------%<-------%<--
- int main() {
- ERR_load_RSA_strings();
- FILE *privateFile = fopen("private.pem", "r");
- RSA *privateRsa = PEM_read_RSAPrivateKey(privateFile, NULL, NULL, NULL);
- FILE *publicFile = fopen("public2.pem", "r");
- RSA *publicRsa = PEM_read_RSAPublicKey(publicFile, NULL, NULL, NULL);
- unsigned char fromPython[] = "8573d0d098d20b8f42302395a9fd89fbdaf20a5e36482a9561a8d6914563fc7190891c9cac42887291a6fc7f5d36faee6da985af3a0827440e9b9d0b99222a79ac83eae3523756affd7b7d57431c113cfce2ef5913f5cd55b7f1b52e13e6cb7eb8c1bf28d32978c0689a36e4f05159c241828970836a03647c4813ba47c3d7a7936cab5885372f923807e363ee555b8dacc3d49093939a25993c401bd77c3fd4f4f88b1dca61a966fd49ce9becce630eb808a39a1d120e246d45c00218f87c28c88a8c2eb245f74d3da2ccbd3c7eaf2fac627cf0f56ef7df4c0d7e562bf3d9314c452a64c2420499ecc35372e09c2bce59d7c4ad1a52eb1223b66c9b04c52fac";
- unsigned char *target2 = malloc(512);
- memset(target2, 0, 512);
- len = RSA_public_decrypt(256, fromPython, target2, publicRsa, 1);
- printf("%i\n", len);
- if (len == -1) {
- ERR_print_errors_fp(stdout);
- printf("\n\n");
- return 1;
- }
- }
- OUTPUT:
- -1
- 4144662340:error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01:rsa_pk1.c:103:
- 4144662340:error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed:rsa_eay.c:773:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement