在Matlab中将字符串保存为P-Code

3
我在我的程序中有一个包含密码的单一字符串。我希望将其保存为Matlab可以读取但用户无法打开或查看的P代码。我从用户(编辑框)获取此字符串密码。我不想保存所有活动或打开的变量,只想将此单个字符串保存到受保护的文件中。
我应该使用哪个函数?
谢谢。
1个回答

1
通常在处理密码时,人们会存储其哈希值而非明文密码。然后,在检查密码是否正确时,只需比较用户输入的密码的哈希值和存储在数据库/文件中的哈希值即可。在Matlab中,您可以使用其内置的Java获取字符串的MD5或SHA1哈希值。
例如:
 md = java.security.MessageDigest.getInstance('MD5');
 md5 = md.digest(uint8('my_secret_password'))'
 % gives: 126  -28   22  -43   39  -94  -48   71  117   28    2  109 -126  -37  -66  -17

 md = java.security.MessageDigest.getInstance('SHA1');
 md5 = md.digest(uint8('my_secret_password'))'
 % gives: 51  -91  -61   39    0   56  -19  -61  112  -10    9  -71 -111  117  117  -71   52   46   50 -122

谢谢你的回答。没有人无法将这个“哈希值”返回到“字符串”吗?还有一个问题。假设用户可以更改密码。我应该在哪里保存这个新密码?我认为我必须有一个安全的文件来存储这个新密码,就像 p-code 一样。这是真的吗? - Eghbal
@user2991243 除了暴力破解之外,没有办法将哈希值转换为字符串。因此,当用户忘记密码时,您只需生成新密码,因为您无法恢复旧密码。当用户提供新密码时,您可以将存储的哈希值更改为新密码的哈希值。要存储哈希密码,您可以使用数据库。这取决于您有多少用户等因素。 - Marcin
谢谢您的回答。正如您所说,为了存储我的用户密码,最好将我的程序连接到类似MySQL的东西。这是真的吗?没有办法将密码存储在安全的mat文件中吗? - Eghbal
@user2991243 我认为Matlab没有内置的加密文件的方法。有许多关于此的帖子,提供了一些可能的解决方法。例如,其中之一是这里 - Marcin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接