文件加密及解密

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using System.IO;
 5 using System.Runtime.Serialization;
 6 using System.Security.Cryptography;
 7
 8 namespace Sky.Decrypt
 9 {
10     /// <summary>
11     /// 解密
12     /// </summary>
13     public class Decryption
14     {
15         public Decryption()
16         {
17         }
18
19         /// <summary>
20         /// 获取文件内容——字符串
21         /// </summary>
22         /// <param name="path">文件路径</param>
23         /// <returns>文件内容</returns>
24         public string GetString(string path)
25         {
26             return this.DeserializeFile(path);
27         }
28
29         /// <summary>
30         /// 反序列化文件
31         /// </summary>
32         /// <param name="path">文件路径</param>
33         /// <returns>文件内容</returns>
34         private string DeserializeFile(string path)
35         {
36             string str = "";
37
38             if(!File.Exists(path))
39             {
40                 throw new Exception("File is not exist!");
41             }
42
43             IFormatter binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
44             using(FileStream fileStream=new FileStream(path,FileMode.Open,FileAccess.Read))
45             {
46                 str = (string)binaryFormatter.Deserialize(fileStream);
47                 fileStream.Close();
48             }
49
50             return str;
51         }
52
53         public string DecryptString(string data,string key)
54         {
55             string str = string.Empty;
56
57             if(string.IsNullOrEmpty(data))
58             {
59                 throw new Exception("data is empty");
60             }
61
62             MemoryStream ms = new MemoryStream();
63             byte[] myKey = Encoding.UTF8.GetBytes(key);
64             byte[] myIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
65
66             DES myProvider = new DESCryptoServiceProvider();
67             CryptoStream cs = new CryptoStream(ms, myProvider.CreateDecryptor(myKey, myIV), CryptoStreamMode.Write);
68
69             try
70             {
71                 byte[] bs =Convert.FromBase64String(data);
72                 cs.Write(bs, 0, bs.Length);
73                 cs.FlushFinalBlock();
74                 str = Encoding.UTF8.GetString(ms.ToArray());
75             }
76             finally
77             {
78                 cs.Close();
79                 ms.Close();
80             }
81             return str;
82         }
83     }
84 }

加密:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;
using System.IO;
using System.Security.Cryptography;

namespace Sky.Encrypt
{
    /// <summary>
    /// 加密
    /// </summary>
    public class Encryption
    {
        /// <summary>
        /// 生成证书文件
        /// </summary>
        /// <param name="data">注册信息</param>
        /// <param name="fileName">证书文件路径</param>
        /// <param name="key"></param>
        public void GenerateFile(string data,string fileName,string key)
        {
            string str = this.EncryptString(data, key);
            this.SerializeFile(str,fileName);
        }

        /// <summary>
        /// 序列化对象
        /// </summary>
        /// <param name="data">数据字符串</param>
        /// <param name="path">文件路径</param>
        private void SerializeFile(string data, string path)
        {
            IFormatter binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            if(data!=null)
            {
                using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
                {
                    binaryFormatter.Serialize(fileStream, data);
                    fileStream.Close();
                }
            }
        }

        public string EncryptString(string data, string key)
        {
            string str = string.Empty;

            if(string.IsNullOrEmpty(data))
            {
                return str;
            }

            MemoryStream ms = new MemoryStream();
            byte[] myKey = Encoding.UTF8.GetBytes(key);
            byte[] myIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

            DES myProvider = new DESCryptoServiceProvider();
            CryptoStream cs = new CryptoStream(ms, myProvider.CreateEncryptor(myKey, myIV), CryptoStreamMode.Write);

            try
            {
                byte[] bs = Encoding.UTF8.GetBytes(data);
                cs.Write(bs, 0, bs.Length);
                cs.FlushFinalBlock();
                str = Convert.ToBase64String(ms.ToArray());
            }
            finally
            {
                cs.Close();
                ms.Close();
            }
            return str;
        }
    }
}

调用加密文件:

Encryption encry = new Encryption();

string xmldata = File.ReadAllText("文件路径1");

string data = encry.EncryptString(xmldata,"abcdefgh");//abcdefgh关键,密码

File.WriteAllText("保存到文件2",data);

解密

Decryption decrypt = new Decryption();

string strData = File.ReadAllText("保存到文件2");

string newData = decrypt.DecryptString(strData,"abcdefgh");//abcdefgh加密是的密钥

文件加密及解密,布布扣,bubuko.com

时间: 2024-11-05 08:23:52

文件加密及解密的相关文章

用openssl对文件加密及解密

Openssl是一个开源的用以实现SSL协议的产品,它主要包括了三个部分:密码算法库.应用程序.SSL协议库.Openssl实现了SSL协议所需要的大多数算法. 下面我将单介绍使用Openssl进行文件的对称加密操作. 一.Openssl支持的加密算法有: -aes-128-cbc -aes-128-cfb -aes-128-cfb1 -aes-128-cfb8 -aes-128-ecb -aes-128-ofb -aes-192-cbc -aes-192-cfb -aes-192-cfb1 -

java spring中对properties属性文件加密及其解密

原创整理不易,转载请注明出处:java spring中对properties属性文件加密及其解密 代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm 加密类: package com.zuidaima.commons.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import

C#使用RSA证书文件加密和解密示例

原文:C#使用RSA证书文件加密和解密示例 修改MSDN上的示例,使之可以通过RSA证书文件加密和解密,中间遇到一个小问题. Q:执行ExportParameters()方法时,回报CryptographicException:该项不适于在指定状态下使用(Key not valid for use in specified state). A:导入带有私钥的证书时,需要使用"X509KeyStorageFlags"参数标记"私钥可导出". X509Certifica

使用Vi/Vim给文件加密和解密

一. 利用vi加密: 优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了: 缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除: vi编辑器相信大家都很熟悉了吧,vi里有一个命令是给文件加密的,举个例子吧: 1) 首先在root主目录/root/下建立一个实验文件text.txt: [[email protected] ~]# vi text.txt 2) 进到编辑模式,输入完内容后按ESC,然后输入:X(注意是大写的X),回车: 3) 这时系统提示

C# 文件加密和解密

1.加密 using System;using System.Collections.Generic;using System.Text;using System.Runtime.Serialization;using System.IO;using System.Security.Cryptography; namespace Sky.Encrypt{    /// <summary>    /// 加密    /// </summary>    public class Enc

CryptoJS文件加密与解密

import React, { Component } from 'react';import CryptoJS from 'crypto-js/crypto-js'import { Button } from 'antd'; class Encryption extends Component { constructor(){ super(); this.state={ value2:'qqqqqqqqqqqq', encryptioned:'', Decrypted:'' } } compo

xxtea 文件加密与解密

加密 cocos luacompile -s src -d dst_dir -e -b xxxxx -k xxxxx --disable-compile 解密 cocos luacompile -s src -d dst_dir -e -j  -b xxxxx -k xxxxx --disable-compile 说明:cocos默认只支持加密,不支持反向解密, 本人改一下python脚本 使其支持解密. -b 后面接的参数是在文件中可以见的. #!/usr/bin/python # -----

python 加密与解密

加密算法分类 对称加密算法: 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥 发送方和接收方需要持有同一把密钥,发送消息和接收消息均使用该密钥. 相对于非对称加密,对称加密具有更高的加解密速度,但双方都需要事先知道密钥,密钥在传输过程中可能会被窃取,因此安全性没有非对称加密高. 常见的对称加密算法:DES,AES,3DES等等 非对称加密算法: 文件加密需要公开密钥(publickey)和私有密钥(privatekey). 接收方在发送消息前需要事先生成公钥和私钥,然后将

小例子: 压缩文件时的加密与解密(read + openssl + tar + dd)

1.有的文件需要加密一下 2.有的文件夹需要加密一下 分析: 文件或文件夹加密时需考量的几个问题? 文件夹自动补全时后缀有反斜杠处理规则 单个文件加密时命名的规则 >脚本命令的格式规定为./ss {unEncryptFile | unEncryptDir} >先判断第一个参数是文件还是文件夹 1.文件夹时 > 判断文件夹是否有反斜杠 > 以文件夹的名称做为生成的压缩包名称 2.文件时 > 此处加密时linux中文件后缀去掉 > 当使用压缩和解压缩时后缀就挺有意义的 &g