Foxtable(狐表)用户栏目专家坐堂 → [求助]是否能够使用密钥对,对文件进行加解密


  共有3449人关注过本帖树形打印复制链接

主题:[求助]是否能够使用密钥对,对文件进行加解密

帅哥哟,离线,有人找我吗?
大红袍
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/21 15:03:00 [显示全部帖子]

 foxtable 不是有加密函数么 http://www.foxtable.com/help/topics/1346.htm

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/21 15:05:00 [显示全部帖子]

RSACryptoServiceProvider 类,不是已经提供了生成方法了么

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/21 16:21:00 [显示全部帖子]

mark 公钥 私钥

 

1、生成独一无二的密钥

 

Dim rsa As New System.Security.Cryptography.RSACryptoServiceProvider()
Using writer As New IO.StreamWriter("d:\test\PrivateKey.xml")
writer.WriteLine(rsa.ToXmlString(True))
End Using
Using writer As New IO.StreamWriter("d:\test\PublicKey.xml")
writer.WriteLine(rsa.ToXmlString(False))
End Using

 

2、对文件进行加密

 

'读取文件
Dim file As new IO.FileStream("d:\test\test.txt", IO.FileMode.Open)
Dim data(file.Length-1) As Byte
file.Read(data, 0, data.Length)
file.Close ()
'加密
Dim oRSA As New System.Security.Cryptography.RSACryptoServiceProvider()
Dim sr As New IO.StreamReader("d:\test\PublicKey.xml")
Dim publickey = sr.ReadToEnd
sr.Close()
oRSA.FromXmlString(publickey)
Dim AOutput As Byte() = oRSA.Encrypt(data ,False)
'生成加密文件
file = new IO.FileStream("d:\test\test加密.txt", IO.FileMode.Create)
file.Write(AOutput, 0, AOutput.Length)
file.Flush()
file.Close()

 

3、对加密文件进行加密

 


'读取文件
Dim file As new IO.FileStream("d:\test\test加密.txt", IO.FileMode.Open)
Dim data(file.Length-1) As Byte
file.Read(data, 0, data.Length)
file.Close ()
'解密
Dim oRSA As New System.Security.Cryptography.RSACryptoServiceProvider()
Dim sr As New IO.StreamReader("d:\test\PrivateKey.xml")
Dim PrivateKey = sr.ReadToEnd
sr.Close()
oRSA.FromXmlString(PrivateKey)
Dim AInput As Byte() = oRSA.Decrypt(data ,False)
'生成加密文件
file = new IO.FileStream("d:\test\test解密.txt", IO.FileMode.Create)
file.Write(AInput, 0, AInput.Length)
file.Flush()
file.Close()


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/24 11:05:00 [显示全部帖子]

 我是一次性获取,大文件的话,一段一段的获取、加密、写入


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/24 12:06:00 [显示全部帖子]

分段加密处理

 

'获取key
Dim oRSA As New System.Security.Cryptography.RSACryptoServiceProvider()
Dim sr As New IO.StreamReader("d:\test\PublicKey.xml")
Dim publickey = sr.ReadToEnd
sr.Close()
oRSA.FromXmlString(publickey)

'读取和写入文件文件
Dim read As new IO.FileStream("d:\test\test.txt", IO.FileMode.Open)
Dim maxLength As Integer = oRSA.KeySize/8-11
Dim data(maxlength-1) As Byte
Dim write As new IO.FileStream("d:\test\test加密.txt", IO.FileMode.Create)
Dim dataSize As Integer = read.Read(data, 0, data.Length)
Do While dataSize = maxLength
    Dim AOutput As Byte() = oRSA.Encrypt(data ,False)
    write.Write(AOutput, 0, AOutput.Length)
    write.Flush()
    dataSize = read.Read(data, 0, data.Length)
    If dataSize < maxLength
        '最后一次的情况
        Dim lsData(dataSize-1) As Byte
        Array.Copy(data, 0, lsData, 0, dataSize)
        Dim lsAOutput As Byte() = oRSA.Encrypt(lsData,False)
        write.Write(lsAOutput, 0, lsAOutput.Length)
        write.Flush()
    End If
Loop

read.Close ()
write.Close()

 

分段解密处理

 

'获取key
Dim oRSA As New System.Security.Cryptography.RSACryptoServiceProvider()
Dim sr As New IO.StreamReader("d:\test\PrivateKey.xml")
Dim PrivateKey = sr.ReadToEnd
sr.Close()
oRSA.FromXmlString(PrivateKey)

'读取和写入文件文件
Dim read As new IO.FileStream("d:\test\test加密.txt", IO.FileMode.Open)
Dim data(oRSA.KeySize/8-1) As Byte
Dim write As new IO.FileStream("d:\test\test解密.txt", IO.FileMode.Create)

Do While read.Read(data, 0, data.Length) > 0
    Dim AInput As Byte() = oRSA.Decrypt(data ,False)
    write.Write(AInput, 0, AInput.Length)
    write.Flush()
Loop
read.Close ()
write.Close()


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/24 15:43:00 [显示全部帖子]

 9楼什么意思?不理解。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/24 16:04:00 [显示全部帖子]

 汗,那你就去搜索c# PGP的加密方式。

 

 引用dll,实现加密


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/24 16:09:00 [显示全部帖子]


 回到顶部