用C++托管程序来保护敏感数据
2005-11-20 11:18
337 查看
一般,要保护的有核心算法和敏感数据。
1、保护核心算法:用C++开发组件
2、保护敏感数据:用C++程序+C++托管组件,不能单纯用组件
为什么说保护敏感数据不能用C++组件?
常见的敏感数据有数据库连接串、密钥,如果通过组件接口通信,对于一些会编程的人而言,
很容易通过编程截获;因为:
a、若对组件的设计时进行授权:即使实现了,因为接口信息在反编译工具很容易得到;破解者
至少拥有了运行时的授权
b、破解者可以通过Ilasm工具来变更注册CheckPoint进行修改
所以,只有不能被编译的代码才是较为“安全”的,而目前只能C++托管程序才能兼有保护和易开发
的优点。下面具体说说方案:
1、思想:通过C++托管程序调用C#.net组件,其中C++托管程序部分作为容器,C#.net组件作为应用
2、实现
a.创建一C++托管组件,新建一C++类,由该类接收敏感数据;调用C#.net组件
b.创建一C++Win32应用程序,通过Regasm调用C++托管组件
c.创建C#.net组件:提供接收敏感数据的接口,打开主应用程序画面
3、要点:通过C++托管组件连接C++和C#
(托管代码均可反编译,只有用非托管C++,才不能被反编译)
1、保护核心算法:用C++开发组件
2、保护敏感数据:用C++程序+C++托管组件,不能单纯用组件
为什么说保护敏感数据不能用C++组件?
常见的敏感数据有数据库连接串、密钥,如果通过组件接口通信,对于一些会编程的人而言,
很容易通过编程截获;因为:
a、若对组件的设计时进行授权:即使实现了,因为接口信息在反编译工具很容易得到;破解者
至少拥有了运行时的授权
b、破解者可以通过Ilasm工具来变更注册CheckPoint进行修改
所以,只有不能被编译的代码才是较为“安全”的,而目前只能C++托管程序才能兼有保护和易开发
的优点。下面具体说说方案:
1、思想:通过C++托管程序调用C#.net组件,其中C++托管程序部分作为容器,C#.net组件作为应用
2、实现
a.创建一C++托管组件,新建一C++类,由该类接收敏感数据;调用C#.net组件
b.创建一C++Win32应用程序,通过Regasm调用C++托管组件
c.创建C#.net组件:提供接收敏感数据的接口,打开主应用程序画面
3、要点:通过C++托管组件连接C++和C#
(托管代码均可反编译,只有用非托管C++,才不能被反编译)
相关文章推荐
- 探究在C++程序并发时保护共享数据的问题
- 转换指南: 将程序从托管C++扩展迁移到C++/CLI
- 走进C++程序世界-------强制数据类型转换(static_cast、dynamic_cast、reinterpret_cast、const_cast)
- 利用mysql加密函数保护web网站敏感数据
- 通过托管代码和 Windows Vista 智能卡 API 来保护您的数据
- 如何利用MySQL加密函数保护Web网站敏感数据
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- 基于托管C++的增删改查及异步回调小程序
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- 【赚】使用数据库加密保护敏感数据
- C++语法一(概述,程序基本元素,数据类型)
- 敏感数据加密保护和数据库访问方式的测试内容
- 【c++程序】用二分法查找数据
- 每日一个C++小程序(十二)--具有静态数据、函数成员的Point类,多文件组织