如何解决tf.random.normal密码学安全吗?
我想使用加密安全的库从正态分布中采样,然后将结果添加到TensorFlow张量。我听说python内置的random
库不是一个选择。
tf.random.normal
的密码安全吗?如果不是,知道有什么用吗?
解决方法
不。它们和tf.random
中的其他方法都使用Philox和ThreeFry算法,尽管它们基于加密算法,但它们并没有主张加密安全性。正如介绍这些算法的论文所述:
任何加密块密码的修改将使其不适合其在安全方面的预期用途,但是PRNG设计在保持[统计质量]的同时以加密强度为代价进行交换是合理的。
(Salmon等人,“并行随机数:像1,2,3一样简单”,2011年。)
,正如彼得所言//GET: File
public JsonResult FileIndex()
{
List<byte> fileList = new List<byte>();
using (FileDBEntities db = new FileDBEntities())
{
fileList = db.tblFiles.ToList();
foreach(var itemFile in fileList) {
fileList.add(File.ReadAllBytes(itemFile));
}
}
return new JsonResult { Data = fileList,JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
不是CSPRNG。因此,我将回答您“您知道有什么可行的方法吗?”问题,而不是标题中一直否定的问题。
Python的tensorflow.random.normal
模块可以提供对操作系统CSPRNG的访问,例如getrandom(2)
在Linux和* BSD下。这是通过SystemRandom
类发生的,该类又使用os.urandom
调用来访问主机的random
系统调用(或Windows下的CryptGenRandom
)。
要将其中的高斯变量转化为getrandom
,您需要执行以下操作:
tensorflow
为您提供形状为import random
import tensorflow as tf
rng = random.SystemRandom()
tf.convert_to_tensor([rng.gauss(0,1) for _ in range(10)])
的{{1}}。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。