MSSQL 调用C#程序集 实现C#字符串到字符的转化
10多年前用过MSSQL 调用C#程序集来实现数据的加密和解密,也搞过通过字符偏移实现简单的加密和解密。这次就总结一下吧:
C#如下:
public class CLRFunctions
{
/// <summary>
/// 数据加密
/// </summary>
/// <param name="target"></param>
/// <returns></returns> public static String DataEncrypt(string target, int keyLen)
{
if (string.IsNullOrEmpty(target)) return string.Empty;
string str = string.Empty;
char[] arr = target.ToCharArray();
for (int i = ; i < arr.Length; i++)
{
char c = arr[i]; str = str + ((char)(c + keyLen));
}
return str;
} /// <summary>
/// 数据解密
/// </summary>
/// <param name="target"></param>
/// <returns></returns> public static String DataDecrypt(string target, int keyLen)
{
if (string.IsNullOrEmpty(target)) return string.Empty;
string str = string.Empty;
char[] arr = target.ToCharArray();
for (int i = ; i < arr.Length; i++)
{
char c = arr[i];
str = str + ((char)(c - keyLen));
}
return str;
}
}
SQL如下,这里需要启用程序集功能,然后在创建程序集:
exec sp_configure 'show advanced options', '';
go
reconfigure;
go
exec sp_configure 'clr enabled', ''
go
reconfigure;
exec sp_configure 'show advanced options', '';
go if exists (select * from sys.assemblies where name='CLRFunctions')
drop assembly CLRFunctions;
go CREATE ASSEMBLY CLRFunctions FROM 'd:\sql\xxx.dll' ;
Go if exists(select from sysobjects where name='dbo.DataEncrypt' and xtype='FN')
begin
drop function dbo.DataEncrypt
end go CREATE FUNCTION dbo.DataEncrypt
(
@target as nvarchar (),
@keyLen as int
)
RETURNS nvarchar ()
AS EXTERNAL NAME CLRFunctions.CLRFunctions.DataEncrypt go
if exists(select from sysobjects where name='dbo.DataDecrypt' and xtype='FN')
begin
drop function dbo.DataDecrypt
end go CREATE FUNCTION dbo.DataDecrypt
(
@target as nvarchar (),
@keyLen as int
)
RETURNS nvarchar ()
AS EXTERNAL NAME CLRFunctions.CLRFunctions.DataDecrypt
后来尝试用SQL实现C#的ToCharArray方法,在实现字符偏移,SQL如下:
if exists(select from sysobjects where name='DataEncrypt' and xtype='FN')
begin
drop function dbo.DataEncrypt
end go
CREATE FUNCTION dbo.DataEncrypt(@target nvarchar (),@keyLen int)
RETURNS nvarchar ()
AS
BEGIN
DECLARE @position int,@ret nvarchar();
SET @position = ;
set @ret=''
WHILE @position <= len(@target)
BEGIN
set @ret=@ret+ nchar(unicode(SUBSTRING(@target, @position, ))+@keylen)
SET @position = @position +
END;
RETURN @ret
END go
if exists(select from sysobjects where name='DataDecrypt' and xtype='FN')
begin
drop function dbo.DataDecrypt
end go CREATE FUNCTION dbo.DataDecrypt(@target nvarchar (),@keyLen int)
RETURNS nvarchar ()
AS
BEGIN
DECLARE @position int,@ret nvarchar();
SET @position = ;
set @ret=''
WHILE @position <= len(@target)
BEGIN
set @ret=@ret+ nchar(unicode(SUBSTRING(@target, @position, ))-@keylen)
SET @position = @position +
END;
RETURN @ret
END
MSSQL 调用C#程序集 实现C#字符串到字符的转化的更多相关文章
- MSSQL 调用 .net 代码
http://www.cnblogs.com/laozhao8/p/3398681.html 在SQL Server中调用.NET程序集 需求是这样的,我在.net程序里操作数据时将一些字段数据加 ...
- c# 调用 C++ dll 传入传出 字符串
c# 调用 C++ dll 传入传出 字符串 2013-07-02 09:30 7898人阅读 评论(2) 收藏 举报 本文章已收录于: 分类: windows 版权声明:随便转载,随便使用. C ...
- The Swift Programming Language-官方教程精译Swift(4)字符串和字符
String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...
- Swift语言指南(十)--字符串与字符
原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...
- Swift 学习- 04 -- 字符串和字符
// 字符串 和 字符 // 字符串 是有序的 Character (字符) 类型的值的集合, 通过 String 类型的集合 // swift 的 String 和 Character 类型提供了 ...
- [精校版]The Swift Programming Language--语言指南--字符串和字符 (转)
今天装了10.10.马上就可以实际编写swift了.还是很兴奋啊. 哈哈.字符串和字符是大家最容易打交道的.今天就转一下讲解swift中字符串和字符的文章.希望对大家有帮助. 原文地址:http:// ...
- 5.Swift教程翻译系列——Swift字符串和字符
英文版PDF下载地址http://download.csdn.net/detail/tsingheng/7480427 字符串是一组字符的有序序列,比方"hello,china"或 ...
- UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理
一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...
- Python中的字符串与字符编码
本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章. ...
随机推荐
- Codeforces 1111D Destroy the Colony 退背包 (看题解)
第一次知道这种背包还能退的.... 我们用dp[ i ]表示选取若干个物品重量到达 i 的方案数. 如果我们g[ i ]表示不用第 x 个物品的, 然后选若干其他的物品到达 i 的方案数. if(i ...
- day24 面向对象,交互,组合,命名空间,初始继承
面向对象的命名空间: #属性:静态属性 (直接和类名关联或者直接定义在class下的变量) # 对象属性 (在类内和self关联,在类外和对象名关联的变量) # 动态属性(函数) class Foo: ...
- Create-react-app+Antd-mobile+Less配置(学习中的记录)
(参考别人结合自己的整理得出,若有错误请大神指出) Facebook 官方推出Create-React-App脚手架,基本可以零配置搭建基于webpack的React开发环境,内置了热更新等功能. 详 ...
- HDU 2444 二分图判断 (BFS染色)+【匈牙利】
<题目链接> 题目大意: 有N个人,M组互相认识关系互相认识的两人分别为a,b,将所有人划分为两组,使同一组内任何两人互不认识,之后将两个组中互相认识的人安排在一个房间,如果出现单人的情况 ...
- HDU 4370 0 or 1 (01规划)【Dijkstra】||【spfa】
<题目链接> 题目大意: 一个n*n的01矩阵,满足以下条件 1.X12+X13+...X1n=12.X1n+X2n+...Xn-1n=13.for each i (1<i<n ...
- npm、webpack、vue-cli 快速上手版
Node.js npm 什么是Node.js 以及npm 简单的来说 Node.js 就是运行在服务端的JavaScript,基于Chrome V8 引擎的. npm 是Node.js 的包管理 ...
- sql的简单操作
mysql 一.mysql简介和安装 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应 ...
- Java基础(十三) 文件高级技术
文件高级技术 一.常见文件类型处理 一)属性文件 属性文件很简单,一行表示一个属性,属性就是键值对,键和值用(=)或者(:)分隔. #ready to work name = tang age = p ...
- IAR map 文件报告与Flash 大小关系
- 三十分钟学完Vue
基础知识: vue的生命周期: beforeCreate/created. beforeMount/mounted. beforeUpdate/updated. beforeDestory/desto ...