【问题标题】:Encrypting parts of a matlab struct [closed]加密matlab结构的部分[关闭]
【发布时间】:2015-11-25 02:03:47
【问题描述】:

一个 MATLAB .mat 文件将在 40-50 人之间共享,其中包含成本数字。此 .mat 用于进行一些复杂的计算,但除了极少数(40-50 人中有 1-2 人)外,不应公开披露费用数字。

所以 1-2 人想保留这个 .mat 文件的“公开”版本

a.dim.a = 1
a.dim.b = 2
a.dim.c = 3
a.cost.x = 11
a.cost.y = 12

然后将“隐藏”版本放在共享驱动器上供其他人使用。

a.dim.a = 1
a.dim.b = 2
a.dim.c = 3
a.cost.x = ADSAUJ#$#I
a.cost.y = SDHAUWH#@$

请注意,m 脚本正在处理此 .mat 文件,因此密钥对加密是不正确的,因为这不是我们试图阻止第三方窥探我们数据的情况。这是为了让一些人的生活变得有点困难,但如果他们努力工作,他们可能会暴露这些数字。所以我想问一下您认为最好的方法是什么?

【问题讨论】:

  • 没有任何上下文这是不可能回答的。难道你不能复制a并在发送之前删除敏感部分吗?
  • 不应该排除敏感部分,因为它将用于客户端的一些计算,但是,我们不想让客户很容易知道值。我们只希望客户知道取决于此值的最终结果。

标签: matlab encryption struct


【解决方案1】:

数据在结构中的事实并不真正相关,问题是如何加密数据,不幸的是 MATLAB 没有内置加密功能。但不要害怕,因为它们在 Java 中可用 - 可以从 MATLAB 访问。

您可以根据您的要求调整the following

import javax.crypto.Cipher;
% The text to encrypt.
plaintext = 'foobar'; 

% Use RSA    
cipher = Cipher.getInstance('RSA');
% Generate a key pair
keygen = java.security.KeyPairGenerator.getInstance('RSA');
keyPair = keygen.genKeyPair();
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPrivate());

% Convert your input to bytes
plaintextUnicodeVals = uint16(plaintext);
plaintextBytes = typecast(plaintextUnicodeVals, 'int8');

% Encrypt
ciphertext = cipher.doFinal(plaintextBytes)'  %'

% And decrypt again...
cipher.init(Cipher.DECRYPT_MODE, keyPair.getPublic());
decryptedBytes = cipher.doFinal(ciphertext);
decryptedText = char(typecast(decryptedBytes, 'uint16'))'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多