将代码转为C#代码

sanduVB 2015-12-24 11:39:54
哪位兄弟帮以下VB代码转为C#代码,谢谢。
Dim ifile As Integer, j As Integer
Dim vByte As Byte
Dim lLoc As Long
Dim ENcrt as string
Dim Estr as string
ENcrt="abcdefghiklmn"
Tfile="D:\123.txt"
iFile = FreeFile()
Open Tfile For Binary Access Read Write As #ifile
For lLoc = 1 To LOF(ifile)
Get #iFile, lLoc, vByte
For j = 1 To Len(ENcrt)
vByte = vByte Xor Asc(Mid(ENcrt, j, 1))
Next j
Put #ifile, lLoc, vByte
Next lLoc
Close #ifile

Open Tfile For Input As #1
Line Input #1, Estr
Close #1

DelFile Ffile
...全文
293 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanduVB 2016-01-07
  • 打赏
  • 举报
回复
好象不是访问权限的问题,不知是什么原因导致的?
sanduVB 2016-01-07
  • 打赏
  • 举报
回复
dongxinxi: “D:\123.txt”是通过 using(var fs = new FileStream(Tfile, FileMode.Create, FileAccess.Write))直接创建的 把文件路径设在Web程序的根目录下,也是提示:不允许进行文件操作。拒绝访问路径
  • 打赏
  • 举报
回复
那你把文件放到web程序可以读写的目录,一般放到站点内部目录就行,最好不要放到站点外的其他目录
sanduVB 2016-01-07
  • 打赏
  • 举报
回复
dongxinxi: 程序运行时提示: 不允许进行文件操作。拒绝访问路径“D:\123.txt” 是web程序
sanduVB 2015-12-25
  • 打赏
  • 举报
回复
谢谢dongxinxi和xuzuning,我试一下。
  • 打赏
  • 举报
回复
上面不是写了吗 int len = data.Length, keyLen = secretKey.Length; for (int i = 0; i < len; ++i) { for (int j = 0; j < keyLen; ++j) { data[i] ^= Convert.ToByte(secretKey[j]); } XOR是VB里的异或运算,对应C#中的^运算符,byte与char不能隐式转换,所以加了个Convert.ToByte 并且你的ENcrt最好不要包含ASCII以外的字符(比如汉字)
xuzuning 2015-12-25
  • 打赏
  • 举报
回复
For j = 1 To Len(ENcrt)
             vByte = vByte Xor Asc(Mid(ENcrt, j, 1))
Next j
对应
for(int j=0; j<ENcrt.Length; j++)
{
  vByte = vByte ^ ENcrt[j];
}
sanduVB 2015-12-25
  • 打赏
  • 举报
回复
请高手在帮补充指点一下,[b]算法不能改变。[/b]
sanduVB 2015-12-24
  • 打赏
  • 举报
回复
网上没找到,谢谢。哪位兄弟帮转一下。 特别是这段: ifile = FreeFile() Open Tfile For Binary Access Read Write As #ifile For lLoc = 1 To LOF(ifile) Get #ifile, lLoc, vByte For j = 1 To Len(ENcrt) vByte = vByte Xor Asc(Mid(ENcrt, j, 1)) Next j Put #ifile, lLoc, vByte Next lLoc Close #ifile Open Tfile For Input As #1 Line Input #1, Estr Close #1
angel6709 2015-12-24
  • 打赏
  • 举报
回复
网上一搜一大堆。
sanduVB 2015-12-24
  • 打赏
  • 举报
回复
dongxinxi:谢谢!以下这段代码算法,用C#如何表达? For j = 1 To Len(ENcrt) vByte = vByte Xor Asc(Mid(ENcrt, j, 1)) Next j
  • 打赏
  • 举报
回复
稍改下就行了,你原来的代码写得太复杂了,没必要把传入参数写到文件然后又读出来,直接在内存里加密写到文件就行 public static void XOROnByte(byte[] data, string secretKey) { int len = data.Length, keyLen = secretKey.Length; for (int i = 0; i < len; ++i) { for (int j = 0; j < keyLen; ++j) { data[i] ^= Convert.ToByte(secretKey[j]); } } } Public string EncryS(EStr As String) { string ENcrt="abcdefghiklmn", Tfile="D:\123.txt" ; var fileData = System.Text.Encoding.UTF8.GetBytes(TFile); XOROnByte(fileData, ENcrt); using(var fs = new FileStream(Tfile, FileMode.Create, FileAccess.Write)) { fs.Write(fileData, 0, fileData.Length); fs.Seek(0, SeekOrigin.Begin); using (var sr = new StreamReader(fs)) { return sr.ReadToEnd(); } } }
sanduVB 2015-12-24
  • 打赏
  • 举报
回复
dongxinxi :谢谢。其中,EStr是传入的字符串。 因工程一致问题,里面的算法不能改变,请帮按原算法指导一下。谢谢。 代码如下: Public Function EncryS(EStr As String) As String Dim ifile As Integer, j As Integer Dim vByte As Byte Dim lLoc As Long Dim ENcrt as string ENcrt="abcdefghiklmn" Tfile="D:\123.txt" '省掉将EStr内容写入Tfile代码 iFile = FreeFile() Open Tfile For Binary Access Read Write As #ifile For lLoc = 1 To LOF(ifile) Get #iFile, lLoc, vByte For j = 1 To Len(ENcrt) vByte = vByte Xor Asc(Mid(ENcrt, j, 1)) Next j Put #ifile, lLoc, vByte Next lLoc Close #ifile Open Tfile For Input As #1 Line Input #1, EStr Close #1 EncryS=EStr End function
  • 打赏
  • 举报
回复
貌似按字节与密钥异或“加密“写回 public static void XOROnByte(byte[] data, string secretKey) { int len = data.Length, keyLen = secretKey.Length; for (int i = 0; i < len; ++i) { for (int j = 0; j < keyLen; ++j) { data[i] ^= Convert.ToByte(secretKey[j]); } } } string ENcrt="abcdefghiklmn", Tfile="D:\123.txt" ; var fileData = System.IO.File.ReadAllBytes(TFile); XOROnByte(fileData, ENcrt); System.IO.File.WriteAllBytes(TFile, fileData); 最后一句是将加密后的内容写回文件,你原来的代码不知道哪来的EStr 其实密钥不应该用string,Convert.ToByte(secretKey[j]) 会有潜在问题,你应该用byte[]作密钥
sanduVB 2015-12-24
  • 打赏
  • 举报
回复
shingoscar :你提供网址打不开。
sanduVB 2015-12-24
  • 打赏
  • 举报
回复
是VB6代码,较复杂点的异或加密。 网上找了些工具,基本转不了。
subxli 2015-12-24
  • 打赏
  • 举报
回复
有工具试试 VBConversions
angel6709 2015-12-24
  • 打赏
  • 举报
回复
这他妈应该是算法描述。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧