C#安全性记录
安全性一直是开发中,重中之重的问题。不过平时用的不算特别多,基本上用个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#安全性记录的更多相关文章
- aix运维
AIX操作系统中有很多程序,为了进行程序版本控制,每一个程序集都有自己的版本号.版本号是由小数点分隔的四位数字,例如5.3.0.9其含义是:操作系统版本号(version).发行版本号(release ...
- [web开发] php优势 - PHP与ASP.NET的比较
php 优势 - PHP与ASP.NET的比较 如今当提到 Web 开发时,您有许多选择.这些方法中许多都涉及到预处理 — 即,利用特定的标记将代码嵌入到 HTML 页面中,这些标记告诉预处理器,它们 ...
- SalesForce 记录级别安全性
对象级安全性 简档 对象级安全性提供了控制 Salesforce.com 中数据的最简单方式.使用对象级安全性 您可以防止用户查看.创 建.编辑或删除特殊类型对象的任何实例 如潜在客户或业务机会.对象 ...
- IDEA对数据库、表、记录的(增删改查可视化操作)、数据库安全性问题的演示
对数据库的增删改查 新增数据库 修改数据库 删除数据库 对表的增删改查 新增表 修改表 删除表 对记录的增删改查 数据库安全性问题的演示 演示脏读 一个事物里面读到了另外一个事物没有提交的数据: ...
- 相关web 片段记录安全性研究(不时更新)
一.有关html/css, js, php, cgi 的一些认识 当我们浏览器訪问一个网站的静态文件.会把文件内容都下载下来(一般压缩).当然假设遇到外联的css/js,会再发起请求得 到.假设我们右 ...
- mysql数据库安全性配置——日志记录
一:开启数据库日志记录 (1)在查看数据库是否开启日志记录,默认是OFF,即关闭状态.(可在数据库中执行该查询语句,也可在服务器端执行) show variables like 'log_bin'; ...
- 前端学HTTP之日志记录
前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...
- 数据库---实验四 oracle的安全性和完整性控制
实验内容: (一) 授权 . 以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位. SQL> create user u1_3985 identified by &q ...
- Atitit.安全性方案规划设计4gm v1 q928
Atitit.安全性方案规划设计4gm v1 q928 1. 安全架构设计与功能安全检测1 2. https1 3. 账号安全体系1 4. 配置文件安全 1 5. 源码加密与安全2 6. 最高强度的 ...
随机推荐
- SQL SERVER 2000 迁移后SQL SERVER代理服务启动错误分析
公司有一个老系统,这个系统所用的数据库是SQL SERVER 2000,它所在的Dell服务器已经运行超过10年了,早已经过了保修服务期,最近几乎每周会出现一次故障,加之5月份另外一台服务器坏了两个硬 ...
- web服务器选择Apache还是Nginx
首先我们来谈谈老朋友Apache,Apache HTTP Server(简称Apache)是世界使用排名第一的Web服务器软件,音译为阿帕奇,是Apache软件基金会的一个开放源码Web服务器,可以运 ...
- 在CentOS安装PHP5.6
简单介绍一下,如何在CentOS上安装PHP5.6. 配置yum源 追加CentOS 6.5的epel及remi源. # rpm -Uvh http://ftp.iij.ad.jp/pub/linux ...
- OOM killer
Linux下有一种OOM KILLER 的机制,它会在系统内存耗尽的情况下,启用自己算法有选择性的kill 掉一些进程. 1. 为什么会有OOM killer 当我们使用应用时,需要申请内存,即进行m ...
- 一个新人眼中的O2O
O2O是近几年来电商行业颇为受宠的方向.就其所代表的意思,线上线下,大部分人都耳熟能详.然而对于这样一个行业,很多人都有附势之嫌.最终是人力物力出尽,效果不佳.一直以来,喜欢互联网,梦想创业,梦想在互 ...
- 谈谈Redis的SETNX
谈谈Redis的SETNX 发表于2015-09-14 在 Redis 里,所谓 SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果,不 ...
- Android项目部署时,发生AndroidRuntime:android.view.InflateException: Binary XML file line #168: Error inflating class错误
这个错误也是让我纠结了一天,当时写的项目在安卓虚拟机上运行都很正常,于是当我部署到安卓手机上时,点击登陆按钮跳转到用户主界面的时候直接结束运行返回登陆界面. 当时,我仔细检查了一下自己的代码,并 ...
- Oracle数据库语言——结构化查询语言SQL
一.数据定义语言DDL 1.创建表空间:CREAT TABLESPACE lyy DATAFILE 'C:/app/lyy.dbf' SIZE 10M;(创建一个10M的表空间,存放在C盘app文件夹 ...
- 洛谷U4859matrix[单调栈]
题目描述 给一个元素均为正整数的矩阵,上升矩阵的定义为矩阵中每行.每列都是严格递增的. 求给定矩阵中上升子矩阵的数量. 输入输出格式 输入格式: 第一行两个正整数n.m,表示矩阵的行数.列数. 接下来 ...
- 第18章 集合框架(2)-Set接口
第18章 集合框架(2)-Set接口 Set是Collection子接口,模拟了数学上的集的概念 Set集合存储特点 1.不允许元素重复 2.不会记录元素的先后添加顺序 Set只包含从Collecti ...