我想创建一个有限状态机,我的用户看不到,但可以作为一个模块导入;或者可能作为一个加密的文本文件进行解密和eval();或者???我愿意接受建议,因为我真的不知道该怎么做。你知道吗
国家机器必须保持自然知识产权;100%安全隐藏。你知道吗
我该怎么办?下面是我想做的一个例子:
import random
import time
import numpy as np
def state_machine(a,b,c):
# This machine should be hidden from users
expiration = 1500000000
if time.time() < expiration:
state = 0
if a[-1]>b[-1]<c[-1]:
state = 1
elif a[-1]<b[-1]<c[-1]:
state = -1
return state
else:
return 'subscription expired'
def generate_3_random():
# Generate some random data for testing purposes
a = np.random.random(2)
b = np.random.random(2)
c = np.random.random(2)
return a,b,c
a,b,c = generate_3_random()
print [a,b,c]
state = state_machine(a,b,c)
print state
样本输出
>>>[array([ 0.320481 , 0.83016095]), array([ 0.15776184, 0.35658263]), array([ 0.96922252, 0.78727468])]
3
采用模块路径,用户版本将如下所示:
import my_encrypted_machine
import random
import time
import numpy as np
def generate_3_random():
# Generate some random data for testing purposes
a = np.random.random(2)
b = np.random.random(2)
c = np.random.random(2)
return a,b,c
a,b,c = generate_3_random()
print [a,b,c]
state = my_encrypted_machine.state_machine(a,b,c)
print state
然后输出的格式将与上面的非保护版本相同。你知道吗
根据你想要达到的目标,你可以做以下几件事:
完全隐藏状态机的内部工作
如果你真的不想让他们看到代码,就把它放到服务器上,给他们一个远程API(REST左右)来通过网络访问它。(并保护服务器!)除非他们侵入你的盒子,否则他们就看不到你的代码。你知道吗
暂时阻止您的用户了解它的工作原理/防止普通黑客看到您的代码
混淆代码。有关此主题的想法,请参见How do I protect Python code?或how to encrypt python source code?。这不容易。使用python以外的工具:)
用加密文本文件描述的内容需要向用户提供解密密钥,这可能意味着用户可以自己解密。你知道吗
相关问题 更多 >
编程相关推荐