Advertisement
Guest User

Untitled

a guest
Dec 25th, 2018
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. int main() {
  2. ERR_load_RSA_strings();
  3. unsigned char md5hash[32];
  4. unsigned char MD5Digest[16];
  5. char *testString = "TEST_TEST_TEST";
  6.  
  7.  
  8. MD5_CTX context;
  9. MD5_Init(&context);
  10. MD5_Update(&context, testString, strlen(testString));
  11. MD5_Final(MD5Digest, &context);
  12.  
  13. printf("MD5 Hash: ");
  14. for (int i = 0; i < 16; ++i) {
  15. printf("0x%02x ", MD5Digest[i]);
  16. }
  17. printf("\n\n");
  18.  
  19. FILE *publicFile = fopen("public.pem", "r");
  20. RSA *publicRsa = PEM_read_RSAPublicKey(publicFile, NULL, NULL, NULL);
  21.  
  22. FILE *privateFile = fopen("private.pem", "r");
  23. RSA *privateRsa = PEM_read_RSAPrivateKey(privateFile, NULL, NULL, NULL);
  24.  
  25. unsigned char *target = malloc(512);
  26. int len = RSA_private_encrypt(16, MD5Digest, target, privateRsa, 1);
  27. printf("Encrypted len: %i\n", len);
  28.  
  29. for (int i = 0; i < 256; i++) {
  30. printf("%02x", target[i]);
  31. }
  32. printf("\n");
  33.  
  34. unsigned char decrypt[64];
  35. memset(decrypt, 0, 64);
  36. len = RSA_public_decrypt(256, target, decrypt, publicRsa, 1);
  37. printf("Decrypted len: %i\n", len);
  38. }
  39. OUTPUT:
  40. MD5 Hash: 0x2b 0x7a 0x26 0x01 0xbe 0xa0 0xa3 0x40 0x25 0x84 0x66 0x07 0xac 0x87 0x89 0x70
  41.  
  42. Encrypted len: 256
  43. 8e9dbfb6ef5f2ebe2c9a7af4b1763fb527c6f9e449d0eeebc94d0d2fda155c9106f2096cf0a05178da482df002f11f9a2d05badc770b66dbb460d70f0acc3d9e3975bae50939444c3f9a9f2013456c798026daf854ffd4f70c69f6dac3bc7458c76fe74a1d798b350f68351884e9311d0c89098ff18955722251f88fafc4a7e5bee7ef16f58fb0f6e702ceb8632a3da340b5ebfe3e48d120558dca697a38d0423c91e298fcf618f0ed6263a68df4778b04cce0660c5de7e1fdb3c96218cef0a8f824cf0641154ccac86927408ed7d2aa11fbd584ccfb5bd839de73000811a652edc0968838b0a4c37bc6b615fcd416e850b645092db92d9926e3f9791efc69bc
  44. Decrypted len: 16
  45.  
  46. -----%<-------%<-------%<-------%<-------%<-------%<-------%<-------%<--
  47.  
  48. # Generate the License
  49. private_key_filename = 'private.pem'
  50. private_key_file = open(private_key_filename, 'rb')
  51. private_key = RSA.importKey(private_key_file.read())
  52. private_key_file.close()
  53.  
  54. from Crypto.Signature import PKCS1_v1_5
  55. from Crypto.Hash import MD5, SHA256
  56.  
  57. test = 'TEST_TEST_TEST'
  58. md5 = MD5.new(test.encode())
  59. print("MD5:", md5.hexdigest())
  60. h = SHA256.new(test.encode())
  61. signature = PKCS1_v1_5.new(private_key).sign(h)
  62. print(signature.hex())
  63.  
  64. OUTPUT:
  65. MD5: 2b7a2601bea0a34025846607ac878970
  66. 8573d0d098d20b8f42302395a9fd89fbdaf20a5e36482a9561a8d6914563fc7190891c9cac42887291a6fc7f5d36faee6da985af3a0827440e9b9d0b99222a79ac83eae3523756affd7b7d57431c113cfce2ef5913f5cd55b7f1b52e13e6cb7eb8c1bf28d32978c0689a36e4f05159c241828970836a03647c4813ba47c3d7a7936cab5885372f923807e363ee555b8dacc3d49093939a25993c401bd77c3fd4f4f88b1dca61a966fd49ce9becce630eb808a39a1d120e246d45c00218f87c28c88a8c2eb245f74d3da2ccbd3c7eaf2fac627cf0f56ef7df4c0d7e562bf3d9314c452a64c2420499ecc35372e09c2bce59d7c4ad1a52eb1223b66c9b04c52fac
  67.  
  68. -----%<-------%<-------%<-------%<-------%<-------%<-------%<-------%<--
  69.  
  70. int main() {
  71. ERR_load_RSA_strings();
  72. FILE *privateFile = fopen("private.pem", "r");
  73. RSA *privateRsa = PEM_read_RSAPrivateKey(privateFile, NULL, NULL, NULL);
  74.  
  75. FILE *publicFile = fopen("public2.pem", "r");
  76. RSA *publicRsa = PEM_read_RSAPublicKey(publicFile, NULL, NULL, NULL);
  77.  
  78. unsigned char fromPython[] = "8573d0d098d20b8f42302395a9fd89fbdaf20a5e36482a9561a8d6914563fc7190891c9cac42887291a6fc7f5d36faee6da985af3a0827440e9b9d0b99222a79ac83eae3523756affd7b7d57431c113cfce2ef5913f5cd55b7f1b52e13e6cb7eb8c1bf28d32978c0689a36e4f05159c241828970836a03647c4813ba47c3d7a7936cab5885372f923807e363ee555b8dacc3d49093939a25993c401bd77c3fd4f4f88b1dca61a966fd49ce9becce630eb808a39a1d120e246d45c00218f87c28c88a8c2eb245f74d3da2ccbd3c7eaf2fac627cf0f56ef7df4c0d7e562bf3d9314c452a64c2420499ecc35372e09c2bce59d7c4ad1a52eb1223b66c9b04c52fac";
  79.  
  80. unsigned char *target2 = malloc(512);
  81. memset(target2, 0, 512);
  82. len = RSA_public_decrypt(256, fromPython, target2, publicRsa, 1);
  83. printf("%i\n", len);
  84.  
  85. if (len == -1) {
  86. ERR_print_errors_fp(stdout);
  87. printf("\n\n");
  88. return 1;
  89. }
  90. }
  91. OUTPUT:
  92. -1
  93. 4144662340:error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01:rsa_pk1.c:103:
  94. 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