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