这个问题可能不太适合在这个平台上提问,但我非常信任这里的人们。
我正在为一个ERP系统编写数据传输应用程序,许多人创建的C#项目速度慢、不灵活,并且充满错误。我找到一种使用SQL SERVER和存储过程来完成它的方法。但是,我不想让我的存储过程被其他程序员窃取,因为存储过程有点像开源代码。我使用加密方式创建了存储过程,但我在互联网上发现了一个小应用程序,可以显示存储过程的内容。
有没有其他方法可以在SQL Server中对我的存储过程进行加密和保护呢?
这个问题可能不太适合在这个平台上提问,但我非常信任这里的人们。
我正在为一个ERP系统编写数据传输应用程序,许多人创建的C#项目速度慢、不灵活,并且充满错误。我找到一种使用SQL SERVER和存储过程来完成它的方法。但是,我不想让我的存储过程被其他程序员窃取,因为存储过程有点像开源代码。我使用加密方式创建了存储过程,但我在互联网上发现了一个小应用程序,可以显示存储过程的内容。
有没有其他方法可以在SQL Server中对我的存储过程进行加密和保护呢?
你的应用程序完全由存储过程编写,没有其他代码吗?你认为有人真的想窃取你的代码的可能性有多大?我问这个问题是因为通常情况下,如果有人非常想要代码,他们会找到一种获取它的方法。如果他们甚至会伪造整个苹果商店,那么某些人总是可以破解任何加密方案。
保护你的知识产权(即代码)的最好方法是不将其提供给任何人:将其作为服务托管。除了这个明显、简单但并非总是可行的选择外,还有一些需要考虑的事情:
是的,有一种方法,只需在存储过程的定义中使用选项WITH ENCRYPTION
即可。
示例
CREATE PROCEDURE spEncryptedProc
WITH ENCRYPTION
AS
BEGIN
SELECT 1
END
GO
exec sp_helptext 'spEncryptedProc'
Result: The text for object 'spEncryptedProc' is encrypted.
确保您个人拥有存储过程的副本,保存在其他您无法查看存储过程定义的位置。
WITH ENCRYPTION
很容易被反向解密。 - SQL Police