日韩精品免费一区二区三区_久久精品国产三级不卡_免费观看中文字幕_好男人社区神马在线观看www

注冊|登錄

聯系電話:024-31891684  13390130939
沈陽軟件公司--沈陽軟件定制

沈陽軟件開發_沈陽軟件公司_沈陽軟件定制/軟件/最新技術

Latest technology最新技術

RSA算法原理

瀏覽量:3543

在SQL SERVER中實現RSA加密算法

一、RSA算法原理
RSA算法非常簡單,概述如下:
找兩素數p和q
取n=p*q
取t=(p-1)*(q-1)
取任何一個數e,要求滿足e<t并且e與t互素(就是最大公因數為1)
取d*e%t==1
這樣最終得到三個數: n d e
設消息為數M (M <n)
設c=(M**d)%n就得到了加密后的消息c 
設m=(c**e)%n則 m == M,從而完成對c的解密。
注:**表示次方,上面兩式中的d和e可以互換。
在對稱加密中:
n d兩個數構成公鑰,可以告訴別人;
n e兩個數構成私鑰,e自己保留,不讓任何人知道。
給別人發送的信息使用e加密,只要別人能用d解開就證明信息是由你發送的,構成了簽名機制。
別人給你發送信息時使用d加密,這樣只有擁有e的你能夠對其解密。
rsa的安全性在于對于一個大數n,沒有有效的方法能夠將其分解從而在已知n d的情況下無法獲得e;同樣在已知n e的情況下無法求得d。
以上內容出自原文出處中國互聯網,CRM,辦公OA,軟件開發易勢科技最專業
二、使用T-SQL實現RSA算法
  --判斷是否為素數
if object_id('f_pnumtest') is not null
  drop function f_isPrimeNum
go
create function [dbo].[f_isPrimeNum]
(@p int)
returns bit
begin
  declare @flg bit,@i int
  select @flg=1, @i=2
  while @i<sqrt(@p)
  begin
  if(@p%@i=0 )
  begin
  set @flg=0
  break
  end  
  set @i=@i+1
  end
  return @flg
end
 
--判斷兩個數是否互素,首先要選取兩個互素的數
 
if object_id('f_isNumsPrime') is not null
  drop function f_isNumsPrime
go
create function f_isNumsPrime
(@num1 int,@num2 int)
returns bit
begin
  declare @tmp int,@flg bit
  set @flg=1
  while (@num2%@num1<>0)
  begin
  select @tmp=@num1,@num1=@num2%@num1,@num2=@tmp
  end
  if @num1=1
  set @flg=0
  return @flg
end
 
--產生密鑰對
if object_id('p_createKey1') is not null
  drop proc p_createKey1
go
create proc p_createKey1
@p int,@q int
as
begin
  declare @n bigint,@t bigint,@flag int,@d int
  if dbo.f_pnumtest(@p)=0
  begin
  print cast(@p as varchar)+'不是素數,請重新選擇數據'
  return
  end
  if dbo.f_pnumtest(@q)=0
  begin
  print cast(@q as varchar)+'不是素數,請重新選擇數據'
  return
  end
  print '請從下列數據中選擇其中一對,作為密鑰'
  select @n=@p*@q,@t=(@p-1)*(@q-1)
  declare @e int
  set @e=2
  while @e<@t
  begin
  if dbo.f_isNUmsPrime(@e,@t)=0
  begin
  set @d=2
  while @d<@n
  begin
  if(@e*@d%@t=1)
  print cast(@e as varchar)+space(5)+cast(@d as varchar)
  set @d=@d+1
  end
  end
  set @e=@e+1
   
  end
end
 
/*加密函數說明,@key 為上一個存儲過程中選擇的密碼中的一個 ,@p ,@q 產生密鑰對時選擇的兩個數。獲取每一個字符的ascii值,然后進行加密,產生2個字節的16位數據*/
 
if object_id('f_RSAEncry') is not null
  drop function f_RSAEncry
go
create function f_RSAEncry
(@s varchar(100),@key int ,@p int ,@q int)
returns varchar(8000)
as
begin
  declare @crypt varchar(8000)
  set @crypt=''
  while len(@s)>0
  begin
  declare @i int,@tmp varchar(10),@k2 int,@leftchar int
  select @leftchar=ascii(left(@s,1)),@k2=@key,@i=1
  while @k2>0
  begin
  set @i=(@leftchar*@i)%(@p*@q)
  set @k2=@k2-1
  end  
  set @tmp=''
  select @tmp=case when @i%16 between 10 and 15 then char( @i%16+55) else cast(@i%16 as varchar) end +@tmp,@i=@i/16
  from (select number from master.dbo.spt_values where type='p' and number<10 )K
  order by number desc
  
  set @crypt=@crypt+right(@tmp,4)
   
  set @s=stuff(@s,1,1,'')
  end
  return @crypt
end
--解密:@key 為一個存儲過程中選擇的密碼對中另一個數字 ,@p ,@q 產生密鑰對時選擇的兩個數 
if object_id('f_RSADecry') is not null
  drop function f_RSADecry
go
create function f_RSADecry
(@s varchar(100),@key int ,@p int ,@q int)
returns varchar(8000)
as
begin
  declare @crypt varchar(8000)
  set @crypt=''
  while len(@s)>0
  begin
  declare @i int
  select @i=sum(data1)
  from ( select case upper(substring(left(@s,4), number, 1)) when 'A' then 10 
  when 'B' then 11
  when 'C' then 12 
  when 'D' then 13 
  when 'E' then 14
  when 'F' then 15 
  else substring(left(@s,4), number, 1)
  end* power(16, len(left(@s,4)) - number) data1 
  from (select number from master.dbo.spt_values where type='p')K
  where number <= len(left(@s,4))
  ) L
  declare @k2 int,@j int
  select @k2=@key,@j=1
  while @k2>0
  begin
  set @j=(@i*@j)%(@p*@q)
  set @k2=@k2-1
  end 
  set @crypt=@crypt+char(@j)
  set @s=stuff(@s,1,4,'')
  end
  return @crypt
end
三、在SQL SERVER中的使用
【測試】 
if object_id('tb') is not null
  drop table tb
go
create table tb(id int identity(1,1),col varchar(100))
go
insert into tb values(dbo.f_RSAEncry('RSA',63,47,59))
 
select * from tb
id col
1 069505EE02F3
 
select id,col=dbo.f_RSADecry(col,847,47,59)
from tb
id col
1 RSA
四、目前版本函數的缺點
1、目前只能對ascii符號進行加密,對unicode尚不支持。
2、在選取的素數都比較小,所以密鑰空間比較小,而實際應用中選取的素數都會非常的大,不容易破解。但是對于一些基礎的加密還能夠使用。
3、如果一次加密覺得安全性不夠的話,可以進行重復加密(即進行多次加密),兩次的密鑰最好不相同。
例如:insert into tb values(dbo.f_RSAEncry(dbo.f_RSAEncry('RSA',63,47,59),23,11,17))
那么解密的時候,按照加密的逆序進行解密:
select id,col=dbo.f_RSADecry(dbo.f_RSADecry(col,7,11,17),847,47,59)
from tb
4、如果選取的數字比較大,那么在進行加密的時候,生成的16進制密文最好使用3個字節或者更多。

上一篇:HTML5最新標簽

下一篇:調試的過程

沈陽團購網|營口網站制作|沈陽軟件公司|軟件定制|網站建設|加盟易勢|提交問題

日韩精品免费一区二区三区_久久精品国产三级不卡_免费观看中文字幕_好男人社区神马在线观看www
欧美日韩在线不卡一区| 欧美一级在线视频| 国产午夜精品一区二区三区欧美| 在线精品视频免费观看| 久久久国产精品一区| 欧美特黄一级| 亚洲免费在线观看| 欧美另类在线观看| 在线观看亚洲精品视频| 久久精品视频在线看| 国产精品伦子伦免费视频| 亚洲午夜精品久久久久久浪潮 | 久久免费高清| 国产精品久久777777毛茸茸| 亚洲欧美日韩成人| 欧美三级网址| 欧美一区二区三区男人的天堂| 欧美日韩在线播放一区| 欧美日韩亚洲综合| 久久综合色一综合色88| 欧美日韩在线观看视频| 亚洲综合国产| 欧美国产视频在线观看| 在线看国产一区| 欧美激情一区二区在线| 亚洲视频网在线直播| 欧美日韩成人精品| 午夜精品久久久久久久99黑人| 欧美日韩一区二区在线播放| 亚洲一区二区在线视频| 欧美色综合网| 亚洲专区国产精品| 国产精品扒开腿爽爽爽视频| 亚洲欧美日韩精品久久久| 国产精品久久7| 久久天堂成人| 在线日本成人| 国产精品成人播放| 久久久久高清| 激情视频一区二区| 亚洲香蕉成视频在线观看 | 国内视频一区| 欧美国产综合视频| 午夜精品一区二区在线观看| 国产一区二区成人| 性欧美暴力猛交另类hd| 午夜天堂精品久久久久 | 国产精品视频免费在线观看| 久久久久久久尹人综合网亚洲| 国产亚洲观看| 欧美日韩国产综合视频在线观看中文| 亚洲欧美在线看| 国产精品资源在线观看| 免费永久网站黄欧美| 欧美怡红院视频| 亚洲欧美日韩人成在线播放| 欧美福利网址| 娇妻被交换粗又大又硬视频欧美| 午夜久久99| 国产一区二区三区无遮挡| 欧美一区二区三区播放老司机| 国产精品久久| 欧美国产高潮xxxx1819| 午夜精品视频在线观看一区二区| 国产麻豆精品久久一二三| 欧美成人精品高清在线播放| 久久aⅴ国产紧身牛仔裤| 欧美日韩成人精品| 六月婷婷一区| 午夜精品久久久久久久99热浪潮| 国产资源精品在线观看| 欧美午夜在线观看| 欧美va亚洲va国产综合| 久久精品国产久精国产思思| 亚洲午夜日本在线观看| 国产亚洲综合精品| 亚洲一二三级电影| 欧美日韩国产首页| 免费观看在线综合| 国产日韩在线看| 亚洲无线观看| 国产精品午夜春色av| 欧美劲爆第一页| 亚洲一区亚洲二区| 黄色成人在线| 国产日韩欧美不卡在线| 欧美精品在线免费| 久久国产加勒比精品无码| 亚洲香蕉视频| 在线观看国产精品网站| 久久国产精品免费一区| 亚洲砖区区免费| 在线观看久久av| 狠狠色丁香久久婷婷综合丁香 | 欧美日本免费| 欧美成年人网| 在线观看成人网| 欧美日韩国产页| 欧美午夜在线| 裸体歌舞表演一区二区| 久久国产黑丝| 欧美影院一区| 午夜精品久久久久久久蜜桃app | 韩国av一区二区| 国产亚洲成av人片在线观看桃| 国产精品久久97| 国产精品三级久久久久久电影| 欧美色一级片| 国产精品福利在线| 亚洲欧美精品一区| 亚洲欧美999| 午夜精品一区二区三区在线视 | 欧美专区在线观看| 欧美亚洲综合另类| 欧美一区二区视频免费观看| 午夜精品一区二区三区四区| 性色av一区二区三区| 香蕉亚洲视频| 久久本道综合色狠狠五月| 久久综合久久美利坚合众国| 久久久噜噜噜久久久| 国产精品v一区二区三区| 欧美天堂亚洲电影院在线观看| 欧美日韩一区二区高清| 欧美色视频在线| 国产精品视频一| 国产区在线观看成人精品| 国产精品福利在线观看| 国产女人aaa级久久久级| 国产日韩综合一区二区性色av| 国产日韩欧美在线视频观看| 国产一区91精品张津瑜| 韩国成人福利片在线播放| 欧美不卡视频| 欧美人妖在线观看| 欧美三级日韩三级国产三级| 欧美啪啪成人vr| 国产精品高清网站| 欧美日本视频在线| 国产精品久久久一本精品| 国产欧美日韩另类一区| 久久人人97超碰精品888 | 欧美va亚洲va国产综合| 欧美日韩不卡合集视频| 国产精品美女久久久久久免费| 国产亚洲精品自拍| 亚洲视频一区二区在线观看| 国产精品福利在线观看网址| 国产欧美日韩免费| 1000精品久久久久久久久| 欧美一级二级三级蜜桃| 老色鬼久久亚洲一区二区| 欧美精品国产精品| 欧美视频网站| 欧美亚洲视频在线观看| 亚洲欧美在线看| 久久综合伊人| 欧美日韩中文字幕精品| 国产精品久久久久久久久久三级 | 国产精品一区亚洲| 激情伊人五月天久久综合| 欧美二区在线观看| 欧美日韩在线观看视频| 国内外成人免费激情在线视频| 极品裸体白嫩激情啪啪国产精品| 亚洲欧美国产精品专区久久| 午夜宅男欧美| 欧美国产先锋| 国产亚洲人成a一在线v站| 亚洲免费视频网站| 女女同性精品视频| 国产精品亚洲网站| 国产精品一页| 韩日午夜在线资源一区二区| 亚洲私人影院在线观看| 亚洲欧美日韩精品久久久| 米奇777超碰欧美日韩亚洲| 久久久久久97三级| 欧美精品免费播放| 国产精品午夜国产小视频| 亚洲私人黄色宅男| 欧美日韩hd| 欧美日韩综合| 国产精品一区二区久久| 在线观看日韩www视频免费| 久久久精品2019中文字幕神马| 欧美激情一区二区久久久| 国产情侣一区| 亚洲在线一区二区| 欧美激情第一页xxx| 欧美v亚洲v综合ⅴ国产v| 欧美日韩久久不卡| 国产精品久久久久久久久婷婷 | 麻豆精品传媒视频| 欧美性色综合| 黄色成人免费网站| 老色鬼久久亚洲一区二区| 国产日本欧美在线观看| 欧美在线观看网址综合| 欧美成人国产一区二区|