Wolfram Blog
Christopher Wolfram

New in the Wolfram Language: Cryptography

May 15, 2015 —Christopher Wolfram, Research & Development

密码已经存在了几千年,但在此之前认真电脑到来的时候,只有特定类型的消息是值得加密。现在,电脑日常管理一个巨大的通信量,很少有缺点无形中将加密几乎一切,从核实其中的信息来自安全地交换信息。由于加密技术的广泛使用,我们增加了现代密码学的基本构建块到Wolfram Languagewith functions using OpenSSL for key generation, symmetric encryption/decryption, and asymmetric encryption/decryption.

The notion of a key in cryptography is similar to the way we use keys in everyday life, in that only someone with a certain key can perform a certain action. One very simple way of arranging this is to have a single key that is used to encrypt as well as decrypt, much like the locking and unlocking of a door:

制作一个键加密和解密

这就是所谓的对称加密由于加密党和党都解密共享一个密钥。对称加密是伟大的,非常安全的加密大量的信息,并且非常有效,但需要有双方之间预先存在的关系,能够分享摆在首位的关键。非对称加密不需要预先存在关系,双方有不同的密钥,通常公钥和私钥。用公钥加密的东西只能与私营一解密码:

Decrypting with a private key versus a public key

Asymmetric cryptography is usually used for exchanging small amounts of information, for instance, a symmetric key that can then be used for transferring a larger message.

这些功能都被设计成由那些没有加密的技术理解可用,但仍保持足够的灵活性,以满足那些谁做。例如,要生成一个安全的对称密钥,你可以简单地运行以下命令:

Creating a secure symmetric key

但是,如果你想生成一个更具体的一种关键的,你可以这样做:

产生特定的安全对称密钥

这种灵活性结转到加密和解密,因为这些功能可以使用任何生成的密钥:

Flexibility with encryption and decryption functions

在Wolframanbet万博appm语言,加密不限于文字。实际上,你可以加密任意表达式:

加密的表达式

一个用于增加加密功能的Wolfram语言的主要动机之一是的到来manbet万博appWolfram Cloud。云本质上是基于通信的。利用它无论是在云的内部工作,并在几乎所有的东西,密码在确保这些通信的安全方面发挥重要作用的潜力。希望我们的易用性和力量,还有Wolfram语言的广泛用户基础的结合,将导致许多有趣的新的协议,以及更安全的云。manbet万博app

(新)的加密功能是在Wolfram语言的10.1版本支持,manbet万博appMathematica,并在所有其他钨产品陆续推出。manbet万博app

This product includes software developed by theOpenSSL Projectfor use in theOpenSSL Toolkit。This product includes cryptographic software written by埃里克年轻人

下载这个帖子的可计算文档格式(CDF)文件。

Posted in:开发者洞察
发表评论

7条评论


PFonseca

很好的补充!

Does this also mean that we are one step closer of having DRM tools, for documents, code and package publishing and distribution, like an extension of the Encode[ ] capabilities?

发布者PFonseca May 15, 2015 at 11:09 am
    沃尔夫勒manbet万博app姆团队

    它可能!有了这个此外,我们正在研究增加更多的DRM相关的功能,但一个完整的DRM系统是一个相当大的任务。

    发布者沃尔夫勒manbet万博app姆团队May 28, 2015 at 2:35 pm
Vitaliy Kaurov

大有用的信息,克里斯托弗,谢谢!

发布者Vitaliy Kaurov May 15, 2015 at 2:20 pm
Paul

尼斯的功能,看起来很容易使用。

The encryption secures communication with the cloud but going further I understand there are ways of running computations in an encrypted way. So, not even the cloud will know what it is computing. Is this possible using the Wolfram Cloud?

Thanks,
Paul.

发贴者保罗·2015年5月17日在下午9点34分
    沃尔夫勒manbet万博app姆团队

    谢谢你的评论!这就是我们要寻找到的东西。难度正在运行的程序而不用解密它作为一个整体,或(如与云的情况下)而没有赋予其可解开的源代码的一个关键运行的程序。

    发布者沃尔夫勒manbet万博app姆团队May 21, 2015 at 12:47 pm
Barrie Stokes

当运行上述代码中,我得到的错误消息“解密:: ivlen:初始化向量是合适的长度不。>>”行之后‘解密[键,%]’。重点则原来是SymmetricKey [
Association[
"Cipher" -> "AES256", "BlockMode" -> "CBC",
"Key" -> {131, 128, 187, 225, 153, 112, 190, 9, 70, 184, 39, 97, 75,
31,182,175,109,255,124,48,113,241,1,131,194,82,112,
11, 172, 19, 37, 198}, "InitializationVector" -> None]]
而不是
SymmetricKey [
Association[
"Cipher" -> "Blowfish", "BlockMode" -> "CFB",
"Key" -> {107, 130, 78, 245, 180, 193, 159, 102, 101, 74, 106, 143,
158,87,151,19,27,85,35,94,221,20,166,251},
“InitializationVector” - >无]]
used in the line
“加密[%,‘如果一个土地,和两个如果由海’]”。
Ifixed这与
“keyGAK = GenerateSymmetricKey [
Method -> "Blowfish", "KeySize" -> 192,
“BlockMode” - > “CFB” |>]”
and then
“Decrypt[keyGAK, %]“,
which works.

Lovely functionality!

Barrie

发贴者巴里斯托克斯2015年5月26日下午6时46
Michael Sollami

Great post Chris, keep them coming!

发布者Michael SollamiJune 11, 2015 at 9:46 am


Leave a comment