using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
public interface IEncrypt
{
string Encrypt(EncryptInfo model);
string Dencrypt(EncryptInfo model);
string Check(EncryptInfo model);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
public class EncryptInfo
{
public EncryptInfo(string source)
{
this.Source = source;
this.Encode = Encoding.Default;
} public EncryptInfo(string source, Encoding encode)
{
this.Source = source;
this.Encode = encode;
}
public string Source { get; set; }
public string Key { get; set; }
public string Iv { get; set; }
public Encoding Encode { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
/// <summary>
/// key的长度必须为24位
/// </summary>
public class Encrypt3DES : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Key = model.Encode.GetBytes(model.Key);
DES.Mode = CipherMode.ECB;
ICryptoTransform DESEncrypt = DES.CreateEncryptor();
byte[] Buffer = model.Encode.GetBytes(model.Source);
return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, , Buffer.Length));
} public string Dencrypt(EncryptInfo model)
{
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Key = model.Encode.GetBytes(model.Key);
DES.Mode = CipherMode.ECB;
DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ICryptoTransform DESDecrypt = DES.CreateDecryptor();
byte[] Buffer = Convert.FromBase64String(model.Source);
return model.Encode.GetString(DESDecrypt.TransformFinalBlock(Buffer, , Buffer.Length));
} public string Check(EncryptInfo model)
{
StringBuilder sb = new StringBuilder();
if (string.IsNullOrEmpty(model.Key))
sb.Append("秘钥不能为空");
else if (model.Key.Length != )
sb.Append("秘钥长度必须为24");
return sb.ToString();
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
/// <summary>
/// 原名Rijndael
/// key 为8 16 24 32位
/// IV 为16位
/// </summary>
public class EncryptAES : IEncrypt
{ public string Encrypt(EncryptInfo model)
{
//Rijndael rijndael = Rijndael.Create();
//rijndael.IV = model.Encode.GetBytes(model.Iv);
//rijndael.Key = model.Encode.GetBytes(model.Key);
//Byte[] bytes = model.Encode.GetBytes(model.Source);
//string result = "";
//using (ICryptoTransform transform = rijndael.CreateEncryptor())
//{
// byte[] output = transform.TransformFinalBlock(bytes, 0, bytes.Length);
// result = Convert.ToBase64String(output);
//}
//return result;
Byte[] plainBytes = model.Encode.GetBytes(model.Source);
Byte[] bKey = new Byte[];
Array.Copy(model.Encode.GetBytes(model.Key.PadRight(bKey.Length)), bKey, bKey.Length);
Byte[] bVector = new Byte[];
Array.Copy(model.Encode.GetBytes(model.Iv.PadRight(bVector.Length)), bVector, bVector.Length);
Byte[] Cryptograph = null;
Rijndael Aes = Rijndael.Create();
using (MemoryStream Memory = new MemoryStream())
{
using (CryptoStream Encryptor = new CryptoStream(Memory,
Aes.CreateEncryptor(bKey, bVector),
CryptoStreamMode.Write))
{
Encryptor.Write(plainBytes, , plainBytes.Length);
Encryptor.FlushFinalBlock();
Cryptograph = Memory.ToArray();
}
}
return Convert.ToBase64String(Cryptograph);
} public string Dencrypt(EncryptInfo model)
{ //Rijndael rijndael = Rijndael.Create();
//rijndael.Key = model.Encode.GetBytes(model.Key);
//rijndael.IV = model.Encode.GetBytes(model.Iv);
//byte[] bytes = model.Encode.GetBytes(model.Source);
//using (ICryptoTransform transform2 = rijndael.CreateDecryptor())
//{
// byte[] decryption = transform2.TransformFinalBlock(bytes, 0, bytes.Length);
// return model.Encode.GetString(decryption);
//}
Byte[] encryptedBytes = Convert.FromBase64String(model.Source);
Byte[] bKey = new Byte[];
Array.Copy(model.Encode.GetBytes(model.Key.PadRight(bKey.Length)), bKey, bKey.Length);
Byte[] bVector = new Byte[];
Array.Copy(model.Encode.GetBytes(model.Iv.PadRight(bVector.Length)), bVector, bVector.Length);
Byte[] original = null;
Rijndael Aes = Rijndael.Create();
using (MemoryStream Memory = new MemoryStream(encryptedBytes))
{
using (CryptoStream Decryptor = new CryptoStream(Memory,
Aes.CreateDecryptor(bKey, bVector),
CryptoStreamMode.Read))
{
using (MemoryStream originalMemory = new MemoryStream())
{
Byte[] Buffer = new Byte[];
Int32 readBytes = ;
while ((readBytes = Decryptor.Read(Buffer, , Buffer.Length)) > )
{
originalMemory.Write(Buffer, , readBytes);
}
original = originalMemory.ToArray();
}
}
}
return model.Encode.GetString(original);
} public string Check(EncryptInfo model)
{
StringBuilder sb = new StringBuilder();
if (string.IsNullOrEmpty(model.Key))
sb.Append("秘钥不能为空,");
else if (model.Key.Length != )
sb.Append("秘钥长度必须为32,");
if (!string.IsNullOrEmpty(model.Iv) && model.Iv.Length != )
sb.Append("向量长度必须为16,");
return sb.ToString();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
public class EncryptBase64 : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
return Convert.ToBase64String(model.Encode.GetBytes(model.Source));
} public string Dencrypt(EncryptInfo model)
{
return model.Encode.GetString(Convert.FromBase64String(model.Source));
}
public string Check(EncryptInfo model)
{
return "";
} }
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
/// <summary>
/// key 为8位
/// IV 为8位
/// </summary>
public class EncryptDES : IEncrypt
{ public string Encrypt(EncryptInfo model)
{
string result = "";
byte[] byKey = model.Encode.GetBytes(model.Key);
byte[] byIV = model.Encode.GetBytes(model.Iv);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write))
using (StreamWriter sw = new StreamWriter(cst))
{
sw.Write(model.Source);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
result = Convert.ToBase64String(ms.GetBuffer(), , (int)ms.Length);
} return result;
} public string Dencrypt(EncryptInfo model)
{
string result = "";
byte[] byKey = model.Encode.GetBytes(model.Key);
byte[] byIV = model.Encode.GetBytes(model.Iv);
byte[] byEnc = Convert.FromBase64String(model.Source);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
using (MemoryStream ms = new MemoryStream(byEnc))
using (CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read))
using (StreamReader sr = new StreamReader(cst))
result = sr.ReadToEnd();
return result;
}
public string Check(EncryptInfo model)
{
StringBuilder sb = new StringBuilder();
if (string.IsNullOrEmpty(model.Key))
sb.Append("秘钥不能为空,");
else if (model.Key.Length != )
sb.Append("秘钥长度必须为8,");
if (!string.IsNullOrEmpty(model.Iv) && model.Iv.Length != )
sb.Append("向量长度必须为8,");
return sb.ToString();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web; namespace EncryptBLL
{
public class EncryptEncode : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
return HttpUtility.UrlEncode(model.Source, model.Encode);
} public string Dencrypt(EncryptInfo model)
{
return HttpUtility.UrlDecode(model.Source, model.Encode);
}
public string Check(EncryptInfo model)
{
return "";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
public class EncryptMD5_16 : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
string result = BitConverter.ToString(md5.ComputeHash(model.Encode.GetBytes(model.Source)), , );
result = result.Replace("-", "");
return result;
} public string Dencrypt(EncryptInfo model)
{
throw new Exception("该方法没有实现方式");
}
public string Check(EncryptInfo model)
{
return "";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
public class EncryptMD5_32 : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
byte[] result = model.Encode.GetBytes(model.Source);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result);
return BitConverter.ToString(output).Replace("-", "");
} public string Dencrypt(EncryptInfo model)
{
throw new Exception("该方法没有实现方式");
}
public string Check(EncryptInfo model)
{
return "";
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
/// <summary>
/// IV为8位
/// key为5-16位
/// </summary>
public class EncryptRC2 : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
byte[] bytesIV = model.Encode.GetBytes(model.Iv);
RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();
byte[] bytesInput = model.Encode.GetBytes(model.Source);
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ms, rc2.CreateEncryptor(model.Encode.GetBytes(model.Key),
bytesIV), CryptoStreamMode.Write))
{
cs.Write(bytesInput, , bytesInput.Length);
cs.FlushFinalBlock();
var result = Convert.ToBase64String(ms.ToArray());
return result;
} } public string Dencrypt(EncryptInfo model)
{
byte[] bytesIV = model.Encode.GetBytes(model.Iv);
RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();
byte[] bytesInput = Convert.FromBase64String(model.Source);
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ms, rc2.CreateDecryptor(Encoding.Default.GetBytes(model.Key),
bytesIV), CryptoStreamMode.Write))
{
cs.Write(bytesInput, , bytesInput.Length);
cs.FlushFinalBlock();
string result = model.Encode.GetString(ms.ToArray());
return result;
}
}
public string Check(EncryptInfo model)
{
StringBuilder sb = new StringBuilder();
if (string.IsNullOrEmpty(model.Key))
sb.Append("秘钥不能为空,");
else if (model.Key.Length < || model.Key.Length > )
sb.Append("秘钥长度必须为5-16之间,");
if (!string.IsNullOrEmpty(model.Iv) && model.Iv.Length != )
sb.Append("向量长度必须为8,");
return sb.ToString();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
/// <summary>
/// 生成的密文每次都会不同
/// </summary>
public class EncryptRSA : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(model.Key);
cipherbytes = rsa.Encrypt(model.Encode.GetBytes(model.Source), false);
return Convert.ToBase64String(cipherbytes);
} public string Dencrypt(EncryptInfo model)
{ RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(model.Key);
cipherbytes = rsa.Decrypt(Convert.FromBase64String(model.Source), false);
return model.Encode.GetString(cipherbytes);
}
public string Check(EncryptInfo model)
{
return "";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks; namespace EncryptBLL
{
public class EncryptSHA1 : IEncrypt
{
public string Encrypt(EncryptInfo model)
{
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] bytes = model.Encode.GetBytes(model.Source);
byte[] output = sha1.ComputeHash(bytes);
string result = BitConverter.ToString(output).Replace("-", "");
return result;
} public string Dencrypt(EncryptInfo model)
{
throw new Exception("该方法没有实现方式");
}
public string Check(EncryptInfo model)
{
return "";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EncryptBLL;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace EncryptBLL.Tests
{
[TestClass()]
public class EncryptRSATests
{
[TestMethod()]
public void EncryptTest()
{
IEncrypt encrypt = new EncryptRSA();
EncryptInfo pwd = new EncryptInfo("", Encoding.UTF8);
//pwd.Key = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
//var result = encrypt.Encrypt(pwd);
//var result1 = new EncryptSHA1().Encrypt(pwd);
//pwd.Source = "us=张三&xin=113";
//var result2 = new EncryptEncode().Encrypt(pwd);
//Assert.AreEqual("us%3d%e5%bc%a0%e4%b8%89%26xin%3d113", result2);
//Assert.AreEqual("7c4a8d09ca3762af61e59520943dc26494f8941b", result1.ToLower());
pwd.Key = "12345678901234567890ab";
pwd.Iv = "1234567890abcd";
var temp = new EncryptAES().Encrypt(pwd);
pwd.Source = temp;
var temp2 = new EncryptAES().Dencrypt(pwd);
}
[TestMethod()]
public void DencryptTest()
{
IEncrypt encrypt = new EncryptRSA();
EncryptInfo pwd = new EncryptInfo("QNKz7wMTPJt0UVfOtat0e/az3DrBs00kybYWaC2dhPn+dGATC7xkyBPXitiZfJHxcefunio4aW1Oc3BlC3QIggo/XT2cRE3lRsClOOxyrrTHWmynYkF4pSKr/xIl64fdjm+taOAJHjdeg6iW5V4AMEpnYLNwLoIQCwzNU5+o5yM=", Encoding.UTF8);
pwd.Key = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent><P>/hf2dnK7rNfl3lbqghWcpFdu778hUpIEBixCDL5WiBtpkZdpSw90aERmHJYaW2RGvGRi6zSftLh00KHsPcNUMw==</P><Q>6Cn/jOLrPapDTEp1Fkq+uz++1Do0eeX7HYqi9rY29CqShzCeI7LEYOoSwYuAJ3xA/DuCdQENPSoJ9KFbO4Wsow==</Q><DP>ga1rHIJro8e/yhxjrKYo/nqc5ICQGhrpMNlPkD9n3CjZVPOISkWF7FzUHEzDANeJfkZhcZa21z24aG3rKo5Qnw==</DP><DQ>MNGsCB8rYlMsRZ2ek2pyQwO7h/sZT8y5ilO9wu08Dwnot/7UMiOEQfDWstY3w5XQQHnvC9WFyCfP4h4QBissyw==</DQ><InverseQ>EG02S7SADhH1EVT9DD0Z62Y0uY7gIYvxX/uq+IzKSCwB8M2G7Qv9xgZQaQlLpCaeKbux3Y59hHM+KpamGL19Kg==</InverseQ><D>vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=</D></RSAKeyValue>";
var result = encrypt.Dencrypt(pwd);
Assert.AreEqual("", result);
}
}
}
using EncryptBLL;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace EncryptFac
{
public partial class Form1 : Form
{
static List<string> encrypts = new List<string> {
"3DES","AES","Base64","DES","Encode","MD5_16","MD5_32","RC2","RSA","SHA1"
};
static List<string> encodes = new List<string> {
"utf-8","gb2312","default","ascii"
};
public Form1()
{
InitializeComponent();
this.cbxType.DataSource = encrypts;
this.cbxEncode.DataSource = encodes;
} private void btnEncrypt_Click(object sender, EventArgs e)
{
try
{ EncryptInfo encrypt = new EncryptInfo(this.txtSource.Text, Encoding.GetEncoding(this.cbxEncode.SelectedValue.ToString()));
encrypt.Iv = this.txtIV.Text;
encrypt.Key = this.txtKey.Text;
IEncrypt obj = (IEncrypt)CreateInstance("EncryptBLL.Encrypt" + this.cbxType.SelectedValue);
string checkeMsg = obj.Check(encrypt);
if (string.Empty != checkeMsg)
{
MessageBox.Show(checkeMsg);
return;
}
this.txtPassword.Text = obj.Encrypt(encrypt);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void btnDecrypt_Click(object sender, EventArgs e)
{
try
{
EncryptInfo encrypt = new EncryptInfo(this.txtSource.Text, Encoding.GetEncoding(this.cbxEncode.SelectedValue.ToString()));
encrypt.Iv = this.txtIV.Text;
encrypt.Key = this.txtKey.Text;
IEncrypt obj = (IEncrypt)CreateInstance("EncryptBLL.Encrypt" + this.cbxType.SelectedValue);
string checkeMsg = obj.Check(encrypt);
if (string.Empty != checkeMsg)
{
MessageBox.Show(checkeMsg);
return;
}
this.txtPassword.Text = obj.Dencrypt(encrypt);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void cbxType_SelectedIndexChanged(object sender, EventArgs e)
{
this.txtPassword.Text = "";
} public object CreateInstance(string fullTypeName, string assemblyPath = "")
{
Type type = assemblyPath == "" ? Type.GetType(fullTypeName)
: Assembly.LoadFile(assemblyPath).GetType(fullTypeName);
if (type == null)
{
FileInfo exeFile = new FileInfo(Assembly.GetExecutingAssembly().Location);
FileInfo[] files = exeFile.Directory.GetFiles("*.dll");
foreach (FileInfo fi in files)
{
type = GetType(fi.FullName, fullTypeName);
if (type != null)
{
break;
}
}
}
if (type == null)
{
return null;
}
return Activator.CreateInstance(type);
} private Type GetType(string dllFile, string fullTypeName)
{
Type type = Assembly.LoadFile(dllFile).GetType(fullTypeName);
return type;
}
}
}

EncryptFac 加解密小工具的更多相关文章

  1. QML-AES加解密小工具

    Intro 为了解码网课视频做的小工具,QML初学者可以参考一下. 项目地址 Todo 在插入新条目时,ListView不会自动根据section进行重排,因此出现同一个文件夹重复多次的现象.目测强行 ...

  2. SM2的非对称加解密java工具类

    maven依赖 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov- ...

  3. 对Java配置文件中敏感信息进行加解密的工具类

    在 JavaEE 配置文件中,例如 XML 或者 properties 文件,由于某些敏感信息不希望普通人员看见,则可以采用加密的方式存储,程序读取后进行解密. 常见的如: 数据库用户密码,短信平台用 ...

  4. C# wpf 实现 MD5加密解密 小工具

    源文件: http://pan.baidu.com/share/link?shareid=2038099474&uk=3912660076 MD5 C# 实现代码来源于网络,感谢原系作者! 参 ...

  5. JavaScript实现RSA加解密

    在GitHub上找到jsencrypt.js对RSA加解密的工具文件,地址分别是:https://github.com/travist/jsencrypt和https://github.com/ope ...

  6. SpringBoot+ShardingSphere彻底解决生产环境数据库字段加解密问题

    前言   互联网行业公司,对于数据库的敏感字段是一定要进行加密的,方案有很多,最直接的比如写个加解密的工具类,然后在每个业务逻辑中手动处理,在稍微有点规模的项目中这种方式显然是不现实的,不仅工作量大而 ...

  7. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  8. Rsa加解密Java、C#、php通用代码 密钥转换工具

    之前发了一篇"TripleDes的加解密Java.C#.php通用代码",后面又有项目用到了Rsa加解密,还是在不同系统之间进行交互,Rsa在不同语言的密钥格式不一样,所以过程中主 ...

  9. RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密

    package com.geostar.gfstack.cas.util; import org.apache.commons.codec.binary.Base64; import javax.cr ...

随机推荐

  1. Ubuntu18.04系统执行语句时出现错误Failed to load module "canberra-gtk-module"

    Ubuntu18.04系统执行gnuradio-companion时,命令行提示错误Failed to load module "canberra-gtk-module",虽然看起 ...

  2. css3小动画:鼠标hover后text-decoration的动画

    实现效果 具体实现 利用css3 ::after或者::before伪元素实现.html代码 <a class="abstract-title" href="/ar ...

  3. python---硬件序列号

    安装wmi : pip install wmi -i https://pypi.douban.com/simple 还要安装  pip install pywin32 import wmi c = w ...

  4. 快速傅立叶变换FFT模板

    递归版 UOJ34多项式乘法 //容易暴栈,但是很好理解 #include <cmath> #include <iostream> #include <cstdio> ...

  5. ansible变量定义

    一./etc/ansible/hosts [webServers] 192.168.2.200 http_port=8009 [web]web1web2 [db]db1db2 [app:childre ...

  6. Python 多线程Ⅲ

    线程优先级队列( Queue) Python的Queue模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列Prior ...

  7. vue 运行脚手架报错

    报错: You are using the runtime-only build of Vue where the template compiler is not available. Either ...

  8. 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题

    一.准备工作: 1.下载OpenCV安装包:https://github.com/opencv/opencv 安装过程实际上就是解压过程,安装完成后得到(这里修改了文件名): 2.下载opencv_c ...

  9. jQuery的replaceWith()函数用法详解

    replaceWith,替换元素 replaceWith() 方法将选择的元素的内容替换为其他内容. 我们先在先看一个实例 <!DOCTYPE html> <html> < ...

  10. JavaWeb-RESTful(二)_使用SpringMVC开发RESTful_上

    JavaWeb-RESTful(一)_RESTful初认识 传送门 JavaWeb-RESTful(二)_使用SpringMVC开发RESTful_上 传送门 JavaWeb-RESTful(三)_使 ...