影音先锋男人每日资源站_精品国产免费久久久久久尖叫_久久久久久成人_国产精品福利网站

注冊(cè)|登錄

聯(lián)系電話:024-31891684  13390130939
沈陽(yáng)軟件公司--沈陽(yáng)軟件定制

沈陽(yáng)軟件開(kāi)發(fā)_沈陽(yáng)軟件公司_沈陽(yáng)軟件定制/軟件/最新技術(shù)

Latest technology最新技術(shù)

RSA算法原理

瀏覽量:3536

在SQL SERVER中實(shí)現(xiàn)RSA加密算法

一、RSA算法原理
RSA算法非常簡(jiǎn)單,概述如下:
找兩素?cái)?shù)p和q
取n=p*q
取t=(p-1)*(q-1)
取任何一個(gè)數(shù)e,要求滿足e<t并且e與t互素(就是最大公因數(shù)為1)
取d*e%t==1
這樣最終得到三個(gè)數(shù): n d e
設(shè)消息為數(shù)M (M <n)
設(shè)c=(M**d)%n就得到了加密后的消息c 
設(shè)m=(c**e)%n則 m == M,從而完成對(duì)c的解密。
注:**表示次方,上面兩式中的d和e可以互換。
在對(duì)稱加密中:
n d兩個(gè)數(shù)構(gòu)成公鑰,可以告訴別人;
n e兩個(gè)數(shù)構(gòu)成私鑰,e自己保留,不讓任何人知道。
給別人發(fā)送的信息使用e加密,只要?jiǎng)e人能用d解開(kāi)就證明信息是由你發(fā)送的,構(gòu)成了簽名機(jī)制。
別人給你發(fā)送信息時(shí)使用d加密,這樣只有擁有e的你能夠?qū)ζ浣饷堋?/div>
rsa的安全性在于對(duì)于一個(gè)大數(shù)n,沒(méi)有有效的方法能夠?qū)⑵浞纸鈴亩谝阎猲 d的情況下無(wú)法獲得e;同樣在已知n e的情況下無(wú)法求得d。
以上內(nèi)容出自原文出處中國(guó)互聯(lián)網(wǎng),CRM,辦公OA,軟件開(kāi)發(fā)易勢(shì)科技最專業(yè)
二、使用T-SQL實(shí)現(xiàn)RSA算法
  --判斷是否為素?cái)?shù)
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
 
--判斷兩個(gè)數(shù)是否互素,首先要選取兩個(gè)互素的數(shù)
 
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
 
--產(chǎn)生密鑰對(duì)
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)+'不是素?cái)?shù),請(qǐng)重新選擇數(shù)據(jù)'
  return
  end
  if dbo.f_pnumtest(@q)=0
  begin
  print cast(@q as varchar)+'不是素?cái)?shù),請(qǐng)重新選擇數(shù)據(jù)'
  return
  end
  print '請(qǐng)從下列數(shù)據(jù)中選擇其中一對(duì),作為密鑰'
  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
 
/*加密函數(shù)說(shuō)明,@key 為上一個(gè)存儲(chǔ)過(guò)程中選擇的密碼中的一個(gè) ,@p ,@q 產(chǎn)生密鑰對(duì)時(shí)選擇的兩個(gè)數(shù)。獲取每一個(gè)字符的ascii值,然后進(jìn)行加密,產(chǎn)生2個(gè)字節(jié)的16位數(shù)據(jù)*/
 
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 為一個(gè)存儲(chǔ)過(guò)程中選擇的密碼對(duì)中另一個(gè)數(shù)字 ,@p ,@q 產(chǎn)生密鑰對(duì)時(shí)選擇的兩個(gè)數(shù) 
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中的使用
【測(cè)試】 
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
四、目前版本函數(shù)的缺點(diǎn)
1、目前只能對(duì)ascii符號(hào)進(jìn)行加密,對(duì)unicode尚不支持。
2、在選取的素?cái)?shù)都比較小,所以密鑰空間比較小,而實(shí)際應(yīng)用中選取的素?cái)?shù)都會(huì)非常的大,不容易破解。但是對(duì)于一些基礎(chǔ)的加密還能夠使用。
3、如果一次加密覺(jué)得安全性不夠的話,可以進(jìn)行重復(fù)加密(即進(jìn)行多次加密),兩次的密鑰最好不相同。
例如:insert into tb values(dbo.f_RSAEncry(dbo.f_RSAEncry('RSA',63,47,59),23,11,17))
那么解密的時(shí)候,按照加密的逆序進(jìn)行解密:
select id,col=dbo.f_RSADecry(dbo.f_RSADecry(col,7,11,17),847,47,59)
from tb
4、如果選取的數(shù)字比較大,那么在進(jìn)行加密的時(shí)候,生成的16進(jìn)制密文最好使用3個(gè)字節(jié)或者更多。

沈陽(yáng)團(tuán)購(gòu)網(wǎng)|營(yíng)口網(wǎng)站制作|沈陽(yáng)軟件公司|軟件定制|網(wǎng)站建設(shè)|加盟易勢(shì)|提交問(wèn)題

久久这里只有精品99| 亚洲国产一区自拍| 亚洲japanese制服美女| 国产一级免费看| 亚洲图片自拍偷拍| 国产专区第一页| 国产成a人无v码亚洲福利| 在线xxxxx| 欧美国产一级| 欧美又粗又长又爽做受| 亚洲欧美一级| 国产精品二区在线观看| 成人日日夜夜| 清纯唯美亚洲激情| 三级网站在线| 中文字幕亚洲色图| 交videos老少配com| 欧美一区二区三区免费在线看| 天天干天天草天天射| 亚洲自拍偷拍av| 国产性生活视频| 久久综合国产精品| 极品久久久久久| 国产自产v一区二区三区c| 国产精品九九视频| 伊人成年综合电影网| 五月天婷婷亚洲| 91久久夜色精品国产按摩| 人妻精品无码一区二区三区| 日韩精品免费一区二区夜夜嗨 | 不卡专区在线| 成人久久久久爱| 男人在线资源站| 欧美一级高清免费播放| 在线中文字幕视频| 欧美插天视频在线播放| 日本视频二区| 久久精品成人欧美大片| 二区视频在线| 色综久久综合桃花网| 成人性a激情免费视频| 亚洲精品综合久久中文字幕| 你懂的免费网站| 日韩欧美在线综合网| 欧美77777免费视频| 欧美日本一道本| 中文一区在线观看| 欧美亚洲一区二区在线| 男人天堂va| 欧美精品乱人伦久久久久久| 中文字幕欧美日韩在线不卡| 欧美性xxxxxxxx| 青青青国产视频| 欧美一二三在线| www.91在线观看| 亚洲大尺度美女在线| 三级全黄视频| 亚洲精品美女在线观看| 2色视频网站| 在线精品国产欧美| 欧美福利网站| 欧美激情女人20p| 青青草免费观看免费视频在线| 97香蕉久久夜色精品国产| 国产高清一级毛片在线不卡| 国产成人av在线播放| 国产丝袜在线| 97人人模人人爽视频一区二区| 国产直播在线| 免费久久99精品国产自| 日韩三级成人| 最新av在线免费观看| 欧洲精品一区| 人人爽人人av| 亚洲一本视频| 91视频啊啊啊| 国产一区二区在线观看免费 | 日本www在线观看| 成人有码在线播放| av资源亚洲| 粗大黑人巨茎大战欧美成人| 激情亚洲色图| 久久综合色之久久综合| 国产日韩精品在线| 国产视频第一区| 国产精品女主播| 国产福利在线免费观看| 国产精品香蕉视屏| 四虎成人精品一区二区免费网站| 天堂v在线视频| 亚洲福利天堂| 污色网站在线观看| 亚洲日产国产精品| 国产美女免费无遮挡| 福利一区二区在线| 免费av网站在线| 亚洲一区二区在线视频| 被男人吃奶添下面好舒服动态图| 日韩精品最新网址| 成年网站免费观看| 欧美精品一区二区免费| aiai在线| 国产精品一区二区你懂得| 91麻豆精品| 国产一区二区网| 国产精品s色| 成人免费网站黄| 99精品视频在线播放观看| 国产精品成人久久久| 精品国产91久久久久久老师| 欧美另类69xxx| 亚洲视频国产视频| 日本中文字幕一区二区有码在线| 成人黄色av网站| 国产精品久久久久77777丨| 国产高清www| 欧美国产三级| 快灬快灬一下爽蜜桃在线观看| 91麻豆成人久久精品二区三区| 国产精品久久欧美久久一区| 欧美日韩免费一区二区三区| 日日摸夜夜爽人人添av| 韩国视频理论视频久久| av有码在线观看| 日韩视频在线观看视频| 2023国产精品久久久精品双| xxxx日本黄色| 欧美国产日韩亚洲一区| 亚洲国产精品久久久久久6q| 精品国产欧美一区二区| 亚洲视频一区在线播放| 麻豆91在线观看| 国产一级特黄a高潮片| 亚洲成精国产精品女| 国产寡妇树林野战在线播放| www.亚洲成人| 在线看福利影| 亚洲综合激情五月| 欧美色一级片| 色在线观看视频| 亚洲成av人片观看| 青草视频.com| 热草久综合在线| 成人黄色免费网站| www.99在线| 国产精品资源网站| 国产又黄又猛又爽| 精品国产伦理网| 欧美理论在线观看| 美女视频久久| 欧美第一精品| 蜜桃视频最新网址| 亚洲国产一区二区三区青草影视| 全免费a级毛片| 国产成人精品视频在线| 爱情电影网av一区二区| 亚洲精品在线网址| 99久久婷婷国产综合精品电影 | 97视频热人人精品免费| 亚洲天堂久久新| 亚洲欧洲日产国码二区| 国产精品白浆流出视频| 韩国19禁主播vip福利视频| 我爱我色成人网| 国内自拍视频一区| 国产精品一区二区三区四区| av免费在线不卡| 日韩高清a**址| 欧美jizzhd69巨大| 中文字幕一区综合| 国产日韩一区二区三区在线播放| 日韩三级一区二区三区| 欧美日韩激情在线| 在线看片线路1| 欧美精品成人一区二区在线观看| 91精品二区| 国语对白一区二区| 欧美日韩精品欧美日韩精品| 在线免费av观看| 日韩国产精品一区二区三区| 欧美激情第8页| 久久精品这里有| 7777精品伊人久久久大香线蕉的| 天堂中文在线8| 亚洲电影网站| 午夜亚洲视频| 91亚洲国产成人精品一区| 亚洲国产精品电影在线观看| 黄在线免费观看| www.射射射| 国产在线一区二区综合免费视频| 亚洲精品97久久中文字幕| 中文字幕一区二区三区电影| 免费成人在线电影| 天天干天天操天天玩| 久久亚洲影视婷婷| 51成人精品网站| 国产精品久久久久久久久久尿| 久久精品国产亚洲5555| 男人舔女人下部高潮全视频|