Since things didn't work out between me and mbedtls, here are the basic encryption algorithms.
rsa-small-numbers.cpp@0:65a36a7b25d0, 2018-11-10 (annotated)
- Committer:
- priyanshu_varshney
- Date:
- Sat Nov 10 20:11:01 2018 +0000
- Revision:
- 0:65a36a7b25d0
Simple encryption algorithms apart from mbedtls(not working)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
priyanshu_varshney | 0:65a36a7b25d0 | 1 | #include<iostream> |
priyanshu_varshney | 0:65a36a7b25d0 | 2 | #include<math.h> |
priyanshu_varshney | 0:65a36a7b25d0 | 3 | |
priyanshu_varshney | 0:65a36a7b25d0 | 4 | int gcd(int a, int h) |
priyanshu_varshney | 0:65a36a7b25d0 | 5 | { |
priyanshu_varshney | 0:65a36a7b25d0 | 6 | int temp; |
priyanshu_varshney | 0:65a36a7b25d0 | 7 | while (1) |
priyanshu_varshney | 0:65a36a7b25d0 | 8 | { |
priyanshu_varshney | 0:65a36a7b25d0 | 9 | temp = a%h; |
priyanshu_varshney | 0:65a36a7b25d0 | 10 | if (temp == 0) |
priyanshu_varshney | 0:65a36a7b25d0 | 11 | return h; |
priyanshu_varshney | 0:65a36a7b25d0 | 12 | a = h; |
priyanshu_varshney | 0:65a36a7b25d0 | 13 | h = temp; |
priyanshu_varshney | 0:65a36a7b25d0 | 14 | } |
priyanshu_varshney | 0:65a36a7b25d0 | 15 | } |
priyanshu_varshney | 0:65a36a7b25d0 | 16 | |
priyanshu_varshney | 0:65a36a7b25d0 | 17 | int main() |
priyanshu_varshney | 0:65a36a7b25d0 | 18 | { |
priyanshu_varshney | 0:65a36a7b25d0 | 19 | double p = 3; |
priyanshu_varshney | 0:65a36a7b25d0 | 20 | double q = 7; |
priyanshu_varshney | 0:65a36a7b25d0 | 21 | double n = p*q; |
priyanshu_varshney | 0:65a36a7b25d0 | 22 | double e = 2; |
priyanshu_varshney | 0:65a36a7b25d0 | 23 | double phi = (p-1)*(q-1); |
priyanshu_varshney | 0:65a36a7b25d0 | 24 | while (e < phi) |
priyanshu_varshney | 0:65a36a7b25d0 | 25 | { |
priyanshu_varshney | 0:65a36a7b25d0 | 26 | |
priyanshu_varshney | 0:65a36a7b25d0 | 27 | if (gcd(e, phi)==1) |
priyanshu_varshney | 0:65a36a7b25d0 | 28 | break; |
priyanshu_varshney | 0:65a36a7b25d0 | 29 | else |
priyanshu_varshney | 0:65a36a7b25d0 | 30 | e++; |
priyanshu_varshney | 0:65a36a7b25d0 | 31 | } |
priyanshu_varshney | 0:65a36a7b25d0 | 32 | |
priyanshu_varshney | 0:65a36a7b25d0 | 33 | int k = 2; |
priyanshu_varshney | 0:65a36a7b25d0 | 34 | double d = (1 + (k*phi))/e; |
priyanshu_varshney | 0:65a36a7b25d0 | 35 | |
priyanshu_varshney | 0:65a36a7b25d0 | 36 | double msg = 20; |
priyanshu_varshney | 0:65a36a7b25d0 | 37 | |
priyanshu_varshney | 0:65a36a7b25d0 | 38 | printf("Message data = %lf", msg); |
priyanshu_varshney | 0:65a36a7b25d0 | 39 | double c = pow(msg, e); |
priyanshu_varshney | 0:65a36a7b25d0 | 40 | c = fmod(c, n); |
priyanshu_varshney | 0:65a36a7b25d0 | 41 | printf("\nEncrypted data = %lf", c); |
priyanshu_varshney | 0:65a36a7b25d0 | 42 | |
priyanshu_varshney | 0:65a36a7b25d0 | 43 | double m = pow(c, d); |
priyanshu_varshney | 0:65a36a7b25d0 | 44 | m = fmod(m, n); |
priyanshu_varshney | 0:65a36a7b25d0 | 45 | printf("\nOriginal Message Sent = %lf", m); |
priyanshu_varshney | 0:65a36a7b25d0 | 46 | |
priyanshu_varshney | 0:65a36a7b25d0 | 47 | return 0; |
priyanshu_varshney | 0:65a36a7b25d0 | 48 | } |