RSA算法(部分实现,逐步完善)

数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。另外,数字签名只采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。

import math
def isPrime():                                                      #求输入的数是否为质数;
  num=int(raw_input('please input a number'))
  i=2
  while i<=math.sqrt(num):
    global i
    if num%i==0:
      print(str(num)+'is not a prime')
      return 0;
    i=i+1
  print(str(num)+'is a prime')

isPrime();




 
def createIndInteger():                                         #随机产生由用户输入的n位随机数
  num=int(raw_input('please input the number bit you want: '));
  i=1;
  count=0
  cInteger=''
  while i<=num:
    temp=random.random();
    if temp>0.5:
      cInteger=cInteger+'1'
    else:
      cInteger=cInteger+'0'
    i=i+1
  print('the random number is: '+cInteger)
  for i in range(0,len(cInteger)):
    if cInteger[i]==str(1):
      sum=2**(len(cInteger)-i-1)
      count=count+sum
  print('binary number to decimal is: '+str(count))

createIndInteger() 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值