用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++,才不能被反编译)

原文地址:https://www.cnblogs.com/fjwuyongzhi/p/280620.html