返回首页


{S0的}内容{A}{A2的}{A3的}{A4纸}{A5的}{A6的}{A7的}{A8的}{A9的}{A10的}{A13号} {A15}{A16}{A17中}{A18}{A19中}{A20的}{A21号}{A22号}{A23} {A24的}{A25}{A26}{A27高速公路}{A28}简介
这篇文章的第一部分提供了一些背景。第二部分介绍了如何安装和为你工作,这样的例子脚本你可以验证他们的工作,并有一些建立。第三部分讨论了如何使用我写自己的应用程序库,给你的指导,充分利用图书馆。第四部分介绍了图书馆的实际代码,它是如何工作的,为什么我做出的选择,我没有。
如果你像我一样,你可能会想知道更多关于我是如何让C#和PHP共同努力代码,不只是一味地使用我的图书馆。不过,我有以防万一的详细使用说明,你只需要复制,粘贴,并使其发挥作用。{A29}背景
几个星期前,我写的概念验证程序,在C#中,部分需要连接到一个PHP脚本安全。我没有选项使用SSL,所以我选择用更加个性化的东西。塑造一个特定的加密算法,将工作语言完全一样的,不管正在实施它,我只是用C#和PHP中提供的内置的算法。这种假设是真实的,在大多数情况下,但我有一个令人惊讶的困难时间加密,微软的库和PHP的mcrypt库之间的实际工作。失败后的几个小时,我终于打破了GOOGLE了快速的解决方案。通常情况下,我觉得我需要在几分钟内接近一个例子,但我看了很长一段时间,并不能找到一个合适的解决方案。似乎没有人相当有许多人那里寻求帮助,试图做的正是我一直在试图做一个完整的答案。许多问题回答不理想,没有回答完整的主题,别人也没有得到任何回应,一个偶然的人最终会应对自己的问题,说什么比quot;我得到了它的工作,quot;但不会张贴他的解决方案帮助我们的休息。我已经花费了 有足够的时间,试图找到一个quot; quickquot;解决方案,所以在这一点上,我继续写我自己。我花了一个完整的星期六,但我得到它的工作。本文我没有得到它的工作细节,提供了一个库,您可以使用,希望能帮助其他人,我是在同样的困境。{A30的AES算法
高级加密标准是一种广泛使用的基于块密码上的Rinjdael的加密算法。和基础,我的意思是,AES是一个子集Rinjdael因为它有固定的128位块大小,而Rinjdael支持可变块长度为128,192或256位。不要混淆块长度密钥的长度。 AES公司支持的密钥长度为128,192或256位(当你看到AES-128,AES-192,AES-256,这个数字表明大小的关键,而不是块大小)。
AES是一种对称的算法,也就是说,必须使用相同的密钥加密和解密消息。虽然该算法是强大的,你必须有一个没有任何拦截沿途的关键,并用它来阅读您的邮件的关键双方安全的方式。这是我们需要一种非对称加密算法。{A31号} RSA算法
RSA算法是不对称的,公开密钥加密方法。这意味着,涉及两个不同的密钥:加密密钥和解密密钥。这些键被称为公共和私有密钥,分别为。私钥被保存在服务器远离窥探的眼睛,而公钥可以被发送到尽可能多的人你的愿望 - 即使你的敌人。的关键之一加密的东西只能与其他解密 - 你可以甚至不解密消息相同的密钥加密它。这样,一台服务器(例如,一个PHP脚本)可以发送给您公共RSA密钥,然后您可以使用加密的东西只有服务器才可以解密。这是你如何能够安全地传输到远程主机使用AES算法对称AES密钥。
但是为什么传输和使用的AES密钥时,你已经有了RSA密钥,您可以使用吗?因为,RSA是非常缓慢。事实上,它是缓慢的,以至于我们只希望使用它足够长的时间来传输为我们的对称算法使用单个键。这基本上是什么幕后发生的事情,当你请求对HTTPS站点的网页。您使用的服务器发送你的公钥,公钥加密一个随机密钥生成,然后你送该加密密钥服务器建立会话,通过它可以安全地通过AES加密消息通信。这就是我的方式实施工作。
请注意,在真正的Word应用程序,还有另外一个步骤,在您的计算机验证,你从网上得到的公共密钥网站通过验证,它是由证书颁发机构签署的有效。如果没有这一步,它有可能假装是一个坚定的个人网站试图访问发出公钥他。然后攻击者可以拦截您的邮件中途故作网站您试图访问,纯文本格式阅读邮件,然后他们与真实网站的公钥进行加密,并将它们发送到真正的网站。请注意,这种攻击是不防止在这篇文章中,所以你不应该使用这种加密这里是过于敏感的事情 - 这样的应用程序,你应该买一个签名证书使用SSL加密的网站。
对这篇文章的目的,我们将使用一个自烧焦的RSA证书。有没有必要买一个证书,这个应用程序,因为我们不打算反正检查签名。我们不会在我们的应用程序的浏览器通知,警告我们,发行人不被信任。我们生成的密钥自己是安全得多,比我们真正需要他们。{第A32}通过隐藏加密
这是一个很好的时间,我警告你编写自己的加密算法的危险。虽然它可能是有趣的,写自己的加密方案(和我已经做了这么多次),这不是一个好主意,用什么。我似乎无法足够强调这一点。很多人都认为(包括我自己在一个点),通过创建不知道自己的算法,你的攻击将算法或密钥,使得它的两倍,不易折断。
在这个推理的缺陷是2倍。其一是,解密的东西,你必须有算法。如果你有算法,即使它编译成一个模糊的组件,它可以被反编译和缺陷研究。如果你的算法的强度在所有的依赖,哪怕是一点点,别人不知道你的算法,那么它是不一个安全的算法。所有算法的强度应由中选择键的强度。二,如果你有一个妥协的关键,那么你只失去了信息获得这把钥匙,任何人使用不同的关键仍然是安全的。如果你有一个妥协的算法,那么每一个比特的信息,不论关键是加密,可能会受到影响。如果算法被发现是坏的,那么计划的1024位密钥可能变成毫无价值。
",但整个世界都知道,AES算法是如何工作的!是现成的算法和解释,有兴趣的,所以它怎么能比我自己的算法更安全quot?;简而言之,AES和RSA进行了广泛的测试,并已通过专家审查。世界各地的真正聪明的人花了很多时间试图打破它, 还是失败了。他们的失败,他们已经证明自己的实力。总是使用已被证明是安全的算法,因为你不知道你多少个安全漏洞俯瞰时,你自己做。
我觉得{第A33}的评论说,它最好的时候,他指出,即使人认为是晦涩的有关安全问题的最佳途径,他也相信他们比一个开放的解决方案,他可以验证。他说,唯一(我绝对同意)加密方案应该是私人的证书或密钥。 [{A34高速公路}]如果加密方法是已知的,它应该不会削弱在所有的加密信息。事实上,如果攻击者知道,你用的AES,他可能会放弃试图从一开始就打破算法。所有你所要做的是生成安全密钥加密,并保证他们的安全。
然后就是编写自己的算法的法律问题。我会放弃的细节,所以我只想说,如果你打算使用自己的加密方案存储其他人的敏感信息(信用卡或类似),并使用一个错误的方法,这样做,你可能会在很多的麻烦。始终使用批准的加密方案你是在处理与其他人的信息。看看在FIPS 140-2标准有{A35号}或看到所有的文件{A36}。 FIPS 140-3是由于出来不久,所以要在它的眼睛。你需要坚持这些标准,如果你运行一个企业。远离形式的DES,因为它已被证明,56位DES密钥可以分解下一天(64位DES密钥实际上是只有56位,因为其他8位是平价)。
安全隐患之外,使自己的算法(这是值得任何)需要大量的时间。为什么不能简单地调用最有可能提供的功能,内置加密您正在使用的语言?专家创建,测试和优化,只为你,所以干脆放弃它和使用它。{A37}获取例如工作{A38}生成一个RSA密钥对使用OpenSSL
出于法律原因,OpenSSL是不包括在本文的下载。您可以下载手动{病态}按照下面的说明来安装它。 (或者,你可以从OpenSSL的开发,但是,那么你就必须自己编译源代码。)
从列表中下载最新的光安装。对于我来说,这是v1.0.0d(32位)。运行安装程序,如果你得到像下面(见图片)弹出,单击"确定" - 我们只需要访问这个包中的文件,所以没有什么不好的事情发生。
{S}
当你到以下quot;复制的OpenSSL DLL文件:quot;屏幕(见图片),选择quot; OpenSSL的二进制文件(/ bin中)directoryquot;选项。
{S2的}
现在已安装了OpenSSL,导航到您安装在资源管理器窗口,它的文件夹。我安装到默认位置地雷对C:\ OpenSSL的Win32的\ bin中。一旦你在那里,打开一个命令窗口,cd到那个目录(例如,键入"CD C:\ OpenSSL的WIN32 \ binquot ;)。现在,您可以产生公共的和私人的RSA密钥。
要生成自己的RSA密钥,在提示符下键入以下命令。
让我们生成一个1024位的RSA私钥存储temp.key:
您可以随意更改以上至2048 1024,如果你想要一个更安全的关键(虽然这是不必要的 - 甚至是网站大多使用1024位键);只知道这将是加密和解密时有点慢。现在,转换的格式,我们将使用私钥:{C}
在下一步中,OpenSSL将会要求你输入一些有关您的网站的信息。你可以使这最多不过你想要的。创建这样的公证书(分发到客户端):

openssl req -new -x509 -nodes -sha1 -key private.key -out public.crt -days 3650

如果你愿意,包括下载,是我写的,你可以简单地复制到bin。bat文件OpenSSL和运行生成一个SSL密钥对你的文件夹。它会停下来问你的信息,如国家信息和密码,所以只要给它想要的东西,它会生成一个RSA密钥对。
我做了一个密钥对是包含在下载你玩(如果你不能得到它的工作自己,或者只是想跳过这一步)。请注意,整个世界拥有该私钥的访问,因为它是可供下载,所以不要使用它什么都重要。
现在你有两个公共和私有密钥RSA加密所必需的。有一个步骤,我们必须采取在服务器上保留我们的私钥的安全。你会发现,私钥被保存在纯文本中的关键文件。如果我们上传到我们的网站,那么任何人都可以通过简单地将查看它yoursite.com / private.key和下载。您可以建立您的Web服务器,以禁止人们从网上下载。关键文件(较硬的方式和方法,我们不会做),或者你可以存储在一个PHP脚本中的变量。如果您尝试打开PHP文件,你会得到一个空白页,而不是的关键。要做到这一点,我们只是要复制到名为美元PrivateRSAKey,像这样的一个PHP变量private.key内容:{体C3}
现在,我们可以使用PHP的include()函数加载到我们的PHP脚本,我们的私钥。我的加密库中使用的功能,变量必须有上述($ PrivateRSAKey)或将无法识别它的名字。另外,确保你不上传private.key文件您的Web服务器!这将是一个很大的安全错误。一旦你产生良好的PHP你的私钥文件,你可能作为以及删除private.key的因此,它不是左右浮动。在下载,我已经提供了一个简单的工具(从5行C#)。关键文件自动转换变量在php文件。你可以使用它,如果你有问题,复制和粘贴字符串搞乱格式或行​​结束字符。
你现在有一个公钥(public.crt)证书和私钥存储在一个PHP变量(private.php)格式。 {A40公路上设置服务器端的PHP脚本
下一步是到了PHP的Web服务器上载该脚本PHP部分。我的PHP脚本上传到另一台计算机,在我的本地网络,正在运行WAMP(Windows操作系统,Apache,MySQL和PHP)。在本文的下载PHP文件夹上传到Web服务器上的文件夹,您想要的一切安全访问。我矿上载我的其他计算机的Web根文件夹名为quot; ENC,quot;脚本将在http://skot2/enc/是我。下一步,添加到这个文件夹以及在public.crt和private.php文件(在上面的步骤1中创建),覆盖包括样品键。 (如果你宁愿暂时用我的钥匙,直到你得到的东西的工作,然后跳过直到后来复制的钥匙。)请注意,在几秒钟,它需要你上传您的私钥到Web服务器,很容易被截取。如果这是一个问题,那么你应该通过HTTPS链接上传到Web服务器或找到一种方法来生成服务器本身。这是唯一的私钥将穿越网络的时间。
本文使用的PHP加密库是PHP二段LIB。这个图书馆是一个极好的纯PHP实现常见的加密算法我们将使用。 PHP二段LIB的代码包含在此为了方便您的下载,但也可以从{A41}下载。
你现在有必要的文件上传到你的网站,应该有一个在互联网上工作的PHP脚本,你可以从C#端的连接访问。{A42}上设置客户端的C#库
这是比较容易的部分,尽量设立一个工作示例。从Visual Studio和命中编译下载,只需打开解决方案文件。{A43号}运行示例
当程序运行时,在第三个框,在您上传到您的网站example.php完整的URL类型(对我来说,这是http://skot2/enc/example.php)并点击"建立Connectionquo​​t。给它一个时刻。当它说,连接已建立(quot;发送Messagequot;按钮会可用),在消息的类型和命中quot;发送Messagequot。如果一切工作正常,那么你会拿回一个有意义的回应,从PHP(而不是乱码或炸弹)。
C#代码示例从服务器检索的公钥,并用它来发送它会产生一个对称密钥。如果你愿意,你也可以测试出HTTP异步自检功能,如果您输入输入正确的URL test.php的,或RSA加密(不转递AES关键)正确的URL到rsa.php。
例如默认http://skot2/,因为这是我的家庭网络上的测试计算机的名称。{A44}使用代码 - 演练{A45高速公路}使用PHP库
我要告诉你如何使用这个库,你步行通过创建一个简单的应用程序:一个高得分的提交!我们要在C#中的跛脚的游戏(在你想要你的得分是所有你要做的是类型)。游戏将发布到我们的安全的PHP脚本将返回用户的高比分他的排名在所有玩家。我们要加密传输,因为我们不想输不起使用HTTP拦截软件捕捉发布的数据(得分),修改他们的得分,然后重新封装,使他们能感受到温暖的欺骗得分列表的顶部。
让我们开始。之前我们写我们自己,我们会看一个例子。如果您已上传整个文件夹的例子,那么你会上传example.php也。顾名思义,这是示例页面,我们将建立的。显示其内容如下:{的C4}
正如你可以看到,我们只需设置的私钥(在PHP格式)和公钥的位置,包括加密库,然后写我们自己的代码为所欲为。这里有几件事要注意...没有任何数据可以是脚本的输出,但什么是SendEncryptedResponse()函数的输出。LT的PHP标签,必须在文件的第一件事。如果有一个空间或开幕前LT新生产线; PHP标签,然后,该脚本将崩溃。这部分是由于这一事实,我们正在开始一个会话,而且还因为我们是加密的数据输出,和一个空间消息之前,可能搞乱我们的C#应用​​程序。你必须设置两个关键的文件中的变量($ PrivateKeyFile和PublicKeyFile美元),你必须将他们的include语句之前。美元PrivateKeyFile应设置为包含您的私钥(上述第一个生成)和PublicKeyFile美元的PHP文件的名称应设置的公证书文件的位置。include语句,显然还需要使用图书馆。什么?低于包括()和GT以上;结束标记是你的逻辑:你将如何处理安全传输的消息。
这里是你如何处理加密的传入消息:
任何时候,这个脚本接收到一个有效的加密邮件,它会自动被解密的AES密钥在当前建立会话(您将建立从C#方稍后)。它被解密后,邮件将被存储在变量$ AESMessage。如果这个变量不为空(检查="quot ;),再有就是纯文本邮件中的变量,你可以处理不过你想要的。在这个例子中,我只是把它发送回给发件人加上一点点额外的。我们要改变这一点,首先解析出获奖者的名字和他的得分。由于我们将最终发送的C​​#端的格式名(逗号)得分从这些,让我们解析出这两个字符串使用PHP的爆炸(分隔符,字符串)功能:
怎么样,我们添加一点点的排名代码:{5233}
现在我们已经做了什么,我们的数据发送给我们希望,我们可以加密的响应发送回客户端,通过访问此页SendEncryptedResponse()函数。此功能自动加密的文本,你给它,并返回给客户端。请注意您可以调用这个函数一次,一旦你调用它,脚本退出。什么都不会被处理后,调用这个函数。作为提醒,不使用任何在你的脚本echo命令的任何地方,因为这会搞乱客户端的响应。下面是我们如何应对:{C7-}
调用这个函数,你做。将被加密并传递给它的消息发送到C#程序调用在此页的首位。下面是完整的源代码的PHP脚本:{C8的}
这是PHP端的东西。让我们继续前进的C#库...{A46公路}使用C#库
我们得到了伪高比分板所有设置完毕,现在我们需要做的是写一个伪游戏,发送一些数据。首先,打开Visual Studio,并开始一个新的Windows窗体应用程序。一旦你在那里,继续前进,拖动一个文本框,一个的NumericUpDown,和一个按钮到窗体。它看起来很漂亮,添加一些标签,并确保设置的NumericUpDown的最大财产,真正高的东西,像100万,活动。这里是我做我的quot; gamequot;接口样子:
{S3的}
现在添加一个onclick事件的按钮(双击在设计视图中的按钮)。在解决方案资源管理器"窗格中,右击引用点击quot;添加Referencequot;浏览直到找到cs2phpCryptography.dll的库,并把它添加(你可以找到在图书馆下载文件夹)。也使确保你添加引用到库,在您的代码隐藏的顶部,像这样:
using CS2PHPCryptography;

希望你不停留。我试图要格外清晰的情况下,正在阅读这篇文章的人,主要是PHP开发人员用C#是不是太熟悉。
下一步,我们要创建1 SecurePHPConnection对象,在Form类和实例如下:{C10的}
右下面的实例化语句,我们会以认购类中的两个事件:OnConnectionEstablished和​​OnResponseReceived。OnConnectionEstablished将提高的时候,作为我的自我命名记录表明,一个安全的连接已建立与远程PHP脚本。OnResponseReceived将提高时,我们可以从远程脚本(这只是发生后,我们发送邮件)响应。这里是你如何订阅:{C11的}
我们几乎没有。现在,我们需要给类的PHP脚本的位置,将其信息发布。这里是如何我们可以做到这一点(代我的网址为你上传你的PHP脚本的位置):{C12的}
现在我们终于可以启动一个安全的连接请求。它需要一段时间,因为我们正在使用RSA(和你们有些人可能会使用2048位键,并使其更慢),所以我将它设置做所有的东西在后台,并呼吁通过上述事件时成功。这里是你做了什么,开始呼叫:
secure.EstablishSecureConnectionAsync();

,您还可以设置按钮的Enabled属性为false,因此,用户不能点击"发送"按钮,直到连接已经建立。只需添加下面的代码:
button1.Enabled = false;

好!我们连线正在启动的程序运行时。现在在为OnConnectionEstablished的事件代码,我们可以启用该按钮让用户知道现在提交他的高得分,这是确定的。
void secure_OnConnectionEstablished(object sender, OnConnectionEstablishedArgs e)

{

    button1.Enabled = true;

}

接下来的事情,我们将添加代码PHP脚本发送实际的高得分。我们可以添加在按钮的click事件代码。首先,我们将得到的用户名和得分和放入一个单一的字符串由逗号隔开,就像我们成立了我们的PHP脚本期望:{C16的}
现在,我们可以发送邮件。经过我们检查,以确保发送消息摆在首位,这是确定的,我们可以只需拨打SendMessageSecureAsync的()函数有我们的信息自动与256位的AES密钥加密和发送到PHP脚本。
一旦PHP处理请求和发送响应,我们可以处理响应其在OnResponseReceived事件。通过变量e事件包含从远程服务器的响应。我选择使用MessageBox显示的回应:{C18的}
现在是时候按F5编译和测试了!一旦应用程序启动时,按钮将变灰了一会儿,直到建立连接。一旦启用,键入一个名称和一个得分,把它关闭,并看看会发生什么。
{四至}
对我的作品。希望它为你工作,以及。这里是完整的C#拉梅游戏的代码清单:
非常简单的代码,我们正在与AES加密消息的远程服务器通信。确定。现在的很酷的东西......{A47公路}代码是如何工作的{A48}实际上是在互联网上?
我把这个图直观地展示什么是真正发生在互联网上:
{五}
,C#程序(从这里称为客户端)的PHP脚本(服务器)以下的纯文本请求职位第一; getkey = yquot"。
二,服务器认为,客户希望公众的RSA密钥,所以它给他在网页请求的响应返回纯文本。
三,客户端生成一个256位的AES密钥和128位初始化向量加密安全随机数发生器。密钥和初始化向量(IV)的弥补,我们需要有连接双方正确加密的对称密钥和解密使用AES算法。关键和IV加密使用的公共RSA密钥(服务器)分开放置POST请求的数据段,然后将其发送到服务器。
第四,服务器将使用其私人的RSA密钥解密都AES密钥和IV它在会话变量存储在服务器上使用只用这一个客户。如果多个客户端连接到同一台服务器,他们每个人都有不同的AES密钥。现在服务器有它需要正确的密钥,并使用它发送字符串"的AES OKquot,与AES密钥进行加密,返回给客户端。
第五,客户得到来自服务器的响应,使用这仅仅是本次会议确立的AES密钥进行解密,然后验证,它说:quot;的AES OKquot。如果没有,那么有一个问题。在这一点上,一个安全的连接已经建立。每次初始化过程中需要的地方,新的AES密钥,用于只是该届会议,然后丢弃完成时。
最后quot; stagequot;是一个循环。客户端发送的任何消息,它希望服务器,服务器处理请求并发送回一个消息,然后客户端处理服务器的响应。在上图中,黑色箭头代表通过互联网纯文本行驶,蓝色行代表一个RSA加密包,红线代表AES加密的消息。
当客户端完成,他(可选)发送AES加密消息quot;密切CONNECTIONquot;到服务器,然后销毁会话变量AES密钥和回报quot; DISCONNECTEDquot;{A49}在PHP{A50的}获得的RSA工作
我所作出的模式,我们将先看看PHP代码。因为它是比C#代码的短了很多,这个工程搞好。由于完整的代码打印这里是太长了,我只是将目前适用于我目前谈论的代码段。
让我们开始与RSA。关闭蝙蝠的权利,我想让你知道,我已经写的库不允许服务器与RSA加密也不只加密解密与RSA的客户端 - 你可以在服务器端(这仅适用于RSA和AES公司,在客户端和解密我们工作两种方式)。这是不是因为我不能这样做,而是因为这个实现,我只使用RSA来传递对称密钥,从而不需要它以两种方式工作。此外,由于该算法是缓慢的,没有任何理由,你为什么会想,除非你使用RSA双向使用某种验证签名,这是目前超出了本文的范围。
首先,客户端将发布到服务器的变量quot; getkey = yquot;当服务器看到这一点,它会简单地吐出"整个公共密钥文件的客户端,然后退出。{C20的}
由于我们使用RSA的纯PHP实现从PHP秒LIB,RSA加密其实很简单。我开始了一个代码例如,初始化为解密引擎:{C21的}
不要太用力。请注意,加密模式设置PKCS1(V2.1),这是简单的,我们正在使用的加密标准。 PKCS1替代的OAEP(最佳非对称加密填充),这大概是一个小更安全,但我们不打算使用此应用程序。 PHP变量$ PrivateRSAKey来从private.php文件,我们前面生成的,包括以上。如果你没有阅读该节,然后才知道私钥文件被复制在其纯 文字全部从密钥文件和一个。php文件中的变量,这样人们就可以不输入直接地址下载在他们的浏览器。私钥本身是加密的格式PKCS1。和我的意思是通过加密,私钥本身是不加密的 - 它是完全有能力被用于加密。
当客户端发送我们的AES密钥,他选择了在本次会议,供我们使用,它会与服务器给他的公钥加密。现在是一个好时机,引进特殊的URL的安全我整个客户端和服务器代码利用Base64编码。下面是它看起来像在PHP:{C22,}
这只是标准的base64编码与所有quot ;/ quot;与quot取代的字符; _quot;和所有的quot; quot;-"字符替换与quot;这是标准的方式使base64编码的字符串URL友好。我们不一定需要从服务器端做,但我选择这样做只是为了确保它的所有传输所有的消息都使用相同的格式。{A51}获取的AES工作
解密被发送到我们​​的RSA公共密钥加密的密钥的AES,让我们来看看它是如何做的:{C23的}
公告,密钥和初始化向量分开发送,他们是base64编码。我们张贴的base64编码解码字符串为一个字节数组,解密它与我们刚刚加载的私有RSA密钥,重的base64编码成一个字符串的字节数组,然后将其存储在会话变量以后使用。现在,我们有安全传输的AES密钥,我们可以使用本次会议的休息。 RSA解密部分运行速度慢(几秒钟),但幸运的是,这是唯一的地方,我们需要它 - AES设置现在,它是非常快。
下面是我们如何得到AES部分工作。再次,AES引擎的初始化很简单:{C24的}
正如你可以看到,我们正在设置,允许最强的AES 256位密钥长度。下一步,我们设置的关键本身先前储存的AES密钥在$ _SESSION ['关键'],以及在本届会议中存储的值设置初始化向量。填充我们是有利的PKCS7填充。有























3。

回答