RSA代码在matlab中 [英] RSA code in matlab

查看:134
本文介绍了RSA代码在matlab中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想加密一个消息,如'HELO1234 ,然后解密以获得原始的。我在matlab中编写了无法正常工作的RSA代码。

I want to encrypt a message such as 'HELO1234 and then decrypt to get the original one.I have written RSA code in matlab which is not working correctly.


PARAMETER CALCULATION

PARAMETER CALCULATION



temp=1;
range=1:10;
k=isprime(range)
prime_mat=range(find(k))
p=randsample(prime_mat,1);
q=randsample(prime_mat,1);
if(p~=q)
n=p*q;
phi_n=(p-1)*(q-1);
u=1:phi_n -1;
end
while temp
 enckey=randsample(u,1);
  deckey=randsample(u,1);
  if(enckey~=deckey)
  if(gcd(enckey,phi_n)~=1 ...
     && gcd(deckey,phi_n)~=1 ...
   &&gcd(enckey*deckey,phi_n)~=1)
    temp=1;
 else 
 temp=0;
  end
  end
end




ENCRYPTION PROCESS

ENCRYPTION PROCESS



 char t= 'hello123';
      t=uint8(t);
        len=length(t)
         pow=[];
         cipher_text=[];
           for i=1:len                                   
               pow=[pow;t(i).^(enckey)];  %each element of the pt matrix(plain text) is raised    to the power of encryption key(enc_key) and stored in pow matrix(power matrix)

    cipher_text=[cipher_text;mod(pow(i),n)];% cipher text is calculate

d


加密过程的输出

OUTPUT OF encryption process

k =

 0     1     1     0     1     0     1     0     0     0

prime_mat =

prime_mat =

 2     3     5     7

p =

 7

q =

 2

n =

14

enckey =

 5

deckey =

 1

phi_n =

 6

len =

28

cipher_text =

cipher_text =

3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3




DECRYPTION PROCESS

DECRYPTION PROCESS



plain_text=[];
pow1=[];
len1=length(cipher_text);
for i=1:len
    pow1=[pow1;cipher_text(i).^(deckey)]
    plain_text=[plain_text;mod(pow1(i),n)]

uint8(plain_text);

uint8(plain_text);

推荐答案

不要打扰自己实现。写密码很难,bug有安全性后果。使用来自值得信赖的供应商的知名库。

Don't bother implementing it yourself. Writing crypto is hard and bugs have security consequences. Use a well-known library from a trusted vendor.

在Matlab中,您可以调用与Matlab绑定的JVM附带的标准Java加密类。 Matlab代码看起来像这样。

In Matlab, you can call down to the standard Java cryptography classes included with the JVM bundled with Matlab. The Matlab code will look something like this.

import javax.crypto.Cipher;

plaintext = 'foobar';

cipher = Cipher.getInstance('RSA');
keygen = java.security.KeyPairGenerator.getInstance('RSA');
keyPair = keygen.genKeyPair();
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPrivate());

plaintextUnicodeVals = uint16(plaintext);
plaintextBytes = typecast(plaintextUnicodeVals, 'int8');
ciphertext = cipher.doFinal(plaintextBytes)'  %'

% And back out
cipher.init(Cipher.DECRYPT_MODE, keyPair.getPublic());
decryptedBytes = cipher.doFinal(ciphertext);
decryptedText = char(typecast(decryptedBytes, 'uint16'))'

这篇关于RSA代码在matlab中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆