安全性一直是开发中,重中之重的问题。不过平时用的不算特别多,基本上用个MD5,SSL也就到这了。再次记录一下,以免忘记。

MD5多次加密

MD5算法是不可逆算法。应用于密码验证,完整性验证这种特征。这里为了避免穷举法(暴力破解),可以进行双重加密。

MD5加密

static void Main(string[] args)
{
string strText = "Chenxy";
Console.WriteLine(strText);
Console.WriteLine(GetMd5Hash(strText));
Console.WriteLine(GetMd5HashStrong(strText));
Console.Read();
} /// <summary>
/// MD5加密
/// </summary>
static string GetMd5Hash(string input)
{
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
return BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(input))).Replace("-", "");
}
}
/// <summary>
/// MD5加密强力.文字加密+哈希秘钥加密.在进行md5加密
/// </summary>
static string GetMd5HashStrong(string input)
{
string hashKey = "Chsndhas%4362** >.fdsa";
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
string hashCode =
BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(input))).Replace("-", "")
+ BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(hashKey))).Replace("-", "");
return BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(hashCode))).Replace("-", "");
}
}

完整性验证

 static void Main(string[] args)
{
string strFileHash = GetFileHash(@"C:\test.txt");
Console.WriteLine(strFileHash);
Console.Read();
} static string GetFileHash(string filePath)
{
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
using (Stream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
return BitConverter.ToString(md5.ComputeHash(fs)).Replace("-", "");
}
}

非对称加密与对称加密

对称加密算法:首先需要发送方和接收方协定一个密钥Key.密钥必须是加密和解密之间能够推算出来的。最简单的就是同一个密钥。在公开通道中传输,即使第三方获取了数据,由于没有密钥,也是解密不了的。

非对称加密算法:首先应有一个密钥对,包含两部分内容。公钥(PK),私钥(SK)公钥通常用来加密,私钥用来解密。非对称加密中,公钥和私钥不能推算,更不能用同一个。

对称加密和非对称加密,各有优缺点。非对称加密突出优点是用于解密的密钥,永远不需要传递给对方。缺点是非对称加密复杂,导致解密速度慢。适合数据量小的场合。

在加密中,有两个关键字是必须知道的:

密钥salt:在加密算法中主要是用来防止字段攻击。salt是在密钥导出之前在密钥末尾引入的随机字节,它使这类攻击变得非常困难。

向量iv:在加密算法中也是起到增强破解难度的,在加密过程中,往往会同时使用密码和上一个数据块的加密结果。因为要加密的第一个数据块显然不存在上一个数据块,所以这个初始化向量就是被设计用来当做初始数据块的加密结果。

SSL

SSL是用于Web安全的网络协议。目前它已被广泛应用到各类网络传输通信中。SSL利用数字证书技术(非对称加密),保证了通信过程中的唯一性、不可篡改性、不可依赖性。

在传统的网络传输中,我们将通信的双方定义为:服务器端和客户端。假定服务器端是数字证书创建者,它保存好自己的私钥,同时公布了自己的公钥给所有的客户端。满足这个条件,来构建SSL通道。

首先,客户端随机生成一个字符串作为密钥K,然后用公钥进行加密。并将加密后的密钥发给服务器端。

服务器端用私钥解密信息,获取了客户端的K,并确认了客户端的身份。SSL通道建立。

服务器端和客户端就可以进行安全通信了。过程是:发送方使用密钥K对要传输的信息进行对称加密,接收方则使用K进行解密。

模拟DEMO:https://coding.net/u/chenxygx/p/CodeSave/git/tree/master/SSLDemo

权限

如需要对应用程序中的某个功能,进行登录用户限制。

可以在方法上,添加。PrincipalPermission(SecurityAction.Demand, Role = @"Users")]

C#安全性记录的更多相关文章

  1. aix运维

    AIX操作系统中有很多程序,为了进行程序版本控制,每一个程序集都有自己的版本号.版本号是由小数点分隔的四位数字,例如5.3.0.9其含义是:操作系统版本号(version).发行版本号(release ...

  2. [web开发] php优势 - PHP与ASP.NET的比较

    php 优势 - PHP与ASP.NET的比较 如今当提到 Web 开发时,您有许多选择.这些方法中许多都涉及到预处理 — 即,利用特定的标记将代码嵌入到 HTML 页面中,这些标记告诉预处理器,它们 ...

  3. SalesForce 记录级别安全性

    对象级安全性 简档 对象级安全性提供了控制 Salesforce.com 中数据的最简单方式.使用对象级安全性 您可以防止用户查看.创 建.编辑或删除特殊类型对象的任何实例 如潜在客户或业务机会.对象 ...

  4. IDEA对数据库、表、记录的(增删改查可视化操作)、数据库安全性问题的演示

    对数据库的增删改查 新增数据库 修改数据库 删除数据库 对表的增删改查 新增表 修改表 删除表 对记录的增删改查 数据库安全性问题的演示 演示脏读 ​ 一个事物里面读到了另外一个事物没有提交的数据: ...

  5. 相关web 片段记录安全性研究(不时更新)

    一.有关html/css, js, php, cgi 的一些认识 当我们浏览器訪问一个网站的静态文件.会把文件内容都下载下来(一般压缩).当然假设遇到外联的css/js,会再发起请求得 到.假设我们右 ...

  6. mysql数据库安全性配置——日志记录

    一:开启数据库日志记录 (1)在查看数据库是否开启日志记录,默认是OFF,即关闭状态.(可在数据库中执行该查询语句,也可在服务器端执行) show variables like 'log_bin'; ...

  7. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

  8. 数据库---实验四 oracle的安全性和完整性控制

    实验内容: (一) 授权 . 以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位. SQL> create user u1_3985 identified by &q ...

  9. Atitit.安全性方案规划设计4gm  v1 q928

    Atitit.安全性方案规划设计4gm  v1 q928 1. 安全架构设计与功能安全检测1 2. https1 3. 账号安全体系1 4. 配置文件安全 1 5. 源码加密与安全2 6. 最高强度的 ...

随机推荐

  1. 内嵌iframe

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs& ...

  2. parawork功能使用说明

    项目整体估算 1.项目估算:依据项目属性,开发规模,参考行业平均生存率自动估算软件工作量.成本.工期 : 2.项目生产率分析:掌握研发生产率行业水平,方便项目管理 : 3.工期占比分析:了解项目关键节 ...

  3. Oracle system identifier(SID) "xxx" alread exits. Specify another SID

    案例环境: 操作系统    :Oracle Linux Server release 5.7 64 bit 数据库版本:Oracle Database 10g Release 10.2.0.4.0 - ...

  4. ORA-39242 错误

    转载: Oracle 11g Release 1 (11.1) Data Pump 技术 http://docs.oracle.com/cd/B28359_01/server.111/b28319/d ...

  5. WINDOWS登录系统之前(欢迎界面)运行指定程序脚本服务

    方法一:创建可在系统登录之前运行的服务 PS:需要用到两个程序—Srvany和Instsrv,点击 http://pan.baidu.com/share/link?shareid=4111024491 ...

  6. 《java JDK7 学习笔记》之对象封装

    1.构造函数实现对象初始化流程的封装.方法封装了操作对象的流程.java中还可以使用private封装对象私有数据成员.封装的目的主要就是隐藏对象细节,将对象当做黑箱子进行操作. 2.在java命名规 ...

  7. PostgreSQL-角色、库、模式、表

    由于不了解postgresql的psql工具,安装完数据库后就直接用pgadmin或navicat来连接操作,在确认初始化后的库中默认有些什么东西后竟然一直无处下手,在还没有了解pg大致体系的情况下搞 ...

  8. Spark快速入门 - Spark 1.6.0

    Spark快速入门 - Spark 1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 快速入门(Quick Start) 本文简单介绍了Spark的使用方式.首 ...

  9. 交互式makefile

    之前一直不知道在shell中调用read赋值后,怎么传给makefile中的变量,后来才恍然大悟. myname := $(shell read -p "Enter your name:&q ...

  10. 动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10)

    本节将演示如何在实验环境中实现下图所示的虚拟网络 配置 Linux Bridge br0 编辑 /etc/network/interfaces,配置 br0. 下面用 vimdiff 展示了对 /et ...