C# 简单的异或加密文本文件或字符串

一、加解密字符串

1、加密方法:将原字符串与加密字符进行异或

 1 private char[] Encrypt(string content, string secretKey)
 2 {
 3     char[] data = content.ToCharArray();
 4     char[] key = secretKey.ToCharArray();
 5     for (int i = 0; i < data.Length; i++)
 6     {
 7         data[i] ^= key[i % key.Length];
 8     }
 9
10     return data;
11 }

2、解密方法:将加密后的字符数组与加密字符进行异或

 1 private string Decrypt(char[] data, string secretKey)
 2 {
 3     char[] key = secretKey.ToCharArray();
 4
 5     for (int i = 0; i < data.Length; i++)
 6     {
 7         data[i] ^= key[i % key.Length];
 8     }
 9
10     return new string(data);
11 }

二、加解密文本文件

1、获得文本文件中的字符串

1 string filePath = Directory.GetCurrentDirectory();
2 filePath = filePath + "\\test.txt";                  //得到路径
3 string str = File.ReadAllText(filePath, Encoding.Default);

2、加密文本并保存

1 char[] data = Encrypt(str,"123");      //将"123"作为密钥
2 string afterEncrypt = new string(data);
3 File.WriteAllText(filePath, afterEncrypt);     //加密后的字符串写入文件

3、读取文本并解密

1 string str1 = File.ReadAllText(filePath, Encoding.Default);
2 char[] data1 = str.ToCharArray();
3 str1 = TextDecrypt(data1, "123");    //解密 str1为解密后的文本

原文地址:https://www.cnblogs.com/guogangsun/p/10046924.html

时间: 2024-08-29 14:25:51

C# 简单的异或加密文本文件或字符串的相关文章

lua简单地异或加密文件

用lua简单地异或加密文件,注意解密的key是加密key的倒序: 1 require 'bit' 2 3 local encode = function(inpath, outpath, key) 4 local inf = assert(io.open(inpath, "rb")) 5 local outf = assert(io.open(outpath, "wb")) 6 7 if (type(key) ~= "string") or (s

简单的异或加密

利用一个简单的事实: x ^ y ^ z 得到 a 那么 a ^ z ^ y 就可以得到 x,或者 a ^ y ^ z 也可以得到 x 加密:提供一个key.txt和input.txt,key.txt装你的密钥,比如:abc123,input.txt装原文(可以包含中文) 解密:key.txt内容仍然是密钥,或者key.txt的内容修改为321cba,input.txt装密文 最高支持密钥长度64位 利用了“输入输出重定向” 这个的缺点在于很可能你加密的密钥是abc123,你输入的密钥是aBc1

Java小知识点------最简单的加密算法(异或加密)

下面给出最简单的代码,可在该代码的基础上添加其他功能,比如将加密后的字符串输出到文件中,从文件中读取要加密或者解密的字符串等... public class Encryption {// 异或加密算法 public static void main(String[] args) { String password="中秋快乐...";//要加密或者解密的字符串 char[]array=password.toCharArray();//获取字符数组 for(int i=0;i<ar

谈谈异或加密

0. 前言 本文包括如下几个内容: 异或算法 异或加密 两个整数交换问题 1. 异或算法 异或是数字逻辑中的基本概念,也是每种编程语言都支持的基本运算.基本原理就是,对于数字1和0有如下的运算公式: 1 ^ 1 = 0 0 ^ 0 = 0 1 ^ 0 = 1 0 ^ 1 = 1 很自然地,这个运算可以扩展到一长串码流上. 更常见的是字节一级或整数的异或运算,可以参考相应的编程语言的相关介绍. 2. 异或加密 异或加密是最简单的一种加密方法,简单来讲,假定有一串码流A,然后可以用key进行加密,把

CBrother异或加密与C++异或加密函数

CBrother脚本异或加密与C++异或加密函数 异或对于数据加密来说是最简单的方式,在一般的安全性要求不是非常高的地方,异或加密是最好的选择. C++异或加密代码 1 int g_PWD = 0xffee00aa; //密码 2 void XORBuf(char *data,int len) 3 { 4 int *buf = (int *)data; 5 int num = len >> 2;//够4个字节的按整形异或 6 for (int i = 0 ; i < num ; i++)

.Net下简单地实现MD5加密

 1.WebView 显示进度条 在onCreate事件里写: [java] view plaincopy WebView myWebView = (WebView) findViewById(R.id.webView1); final Activity activity = this; myWebView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int prog

Java实现异或加密

/** * 异或加密 * * @param strOld * 源字符串 * @param strKey * 密钥 * @return 加密后的字符串 */ public static String encrypt(String strOld, String strKey) { byte[] data = strOld.getBytes(); byte[] keyData = strKey.getBytes(); int keyIndex = 0; for (int i = 0; i < strO

异或加密原理

加密原理 因为: 1. A xor B xor C = (A xor B) xor C = A xor (B xor C) 2. A xor B xor B = A 所以有: A xor B xor B = (C= A xor B) xor B = C xor B = A 公开加密后的值C,保留key B ,c xor B 得到原始数据A #PYTHON 2.7 #coding: utf-8 ''' xor operator lab ''' def xor_encode(original,key

字符串异或加密

/** *  字符串异或加密 * *  @param oldStr 被加密的字符串 *  @param x      字符偏移量 * *  @return 加密后的字符串 */ - (NSString *)getCharArrayUsingString:(NSString *)oldstr withCharOffset:(int)x { if (nil == oldstr || [@"" isEqualToString:oldstr]) { return @"";