検索
ホームページバックエンド開発PHPチュートリアルPHPは、AESの暗号化と復号化をJavaと一致する方法をどのように実装していますか?

PHPにAES暗号化と復号化を実装する方法は?

毎日の開発では、さまざまなプログラミング言語に一貫した暗号化と復号化機能を実装する必要があることがよくあります。最近、開発者はJavaに実装されたAES暗号化と復号化コードの一部を共有し、PHPで同じ効果を達成したいと考えています。以下では、PHPを使用してJavaコードと一致するAES暗号化と復号化を実現する方法について詳しく説明します。

まず、JavaコードのAES暗号化と復号化の実装の詳細を理解する必要があります。 AESアルゴリズムはJavaコードで使用され、KeygeneratorとSecureriandomが生成されます。暗号化されると、データは16進文字列に変換され、復号化されると、16進列の文字列が復号化のためにバイナリデータに変換されます。

次に、PHPで同様の機能を実装する方法を見てみましょう。 PHPのopenSSL拡張は、強力な暗号化関数を提供し、これを使用してAES暗号化と復号化を実装できます。以下は参照コードです。

クラスaesutil
{
    private static $ key = "test"; //デフォルトキー/**
     *暗号化機能*
     * @Param String $コンテンツデータ暗号化される* @Param String | null $ key暗号化に使用されるキーは、指定されていない場合、デフォルトのキーを使用します* @return文字列暗号化されたHexadecimal文字列*/
    public static関数暗号化($ content、$ key = null)
    {
        if(is_null($ key)){//キーが指定されていない場合は、デフォルトのキー$ key = self :: $ keyを使用します。
        }

        //ランダムな初期化ベクトル(iv)を生成する
        $ iv_size = openssl_cipher_iv_length( 'aes-128-cbc');
        $ iv = openssl_random_pseudo_bytes($ iv_size);

        //データを暗号化します$ necrypted_data = openssl_encrypt($ content、 'aes-128-cbc'、$ key、openssl_raw_data、$ iv);

        //出力$ data_with_iv = $ ivの結果として、IVと暗号化されたデータを接続します。 $ necrypted_data;
        return strtoupper(bin2hex($ data_with_iv)); //結果を16進文字列に変換して返します}

    /**
     *関数を復号化*
     * @Param String $ decrypt(16進文字列)へのコンテンツデータ
     * @param string | null $キーは、指定されていない場合、デフォルトキーが使用されていない場合に使用されるキーを使用します * @return string decrypted data */
    public static function decrypt($ content、$ key = null)
    {
        if(is_null($ key)){//キーが指定されていない場合は、デフォルトのキー$ key = self :: $ keyを使用します。
        }

        //入力Hexadecimal文字列をバイナリデータに変換します$ data_with_iv = hex2bin($ content);

        //データからIVと暗号化されたデータを抽出$ iv_size = openssl_cipher_iv_length( 'aes-128-cbc');
        $ iv = substr($ data_with_iv、0、$ iv_size);
        $ necrypted_data = substr($ data_with_iv、$ iv_size);

        //データを復号化します$ decrypted_data = openssl_decrypt($ necrypted_data、 'aes-128-cbc'、$ key、openssl_raw_data、$ iv);

        $ decrypted_dataを返します。 //復号化されたデータを返します}
}

//例$ plantext = "hello、world!";
$ necrypted_text = aesutil :: necrypt($ plantext);
$ decrypted_text = aesutil :: decrypt($ necrypted_text);

エコー「オリジナルテキスト:」。 $ PLANTEXT。 php_eol;
エコー「暗号化後:」。 $ necrypted_text。 php_eol;
エコー「復号化された後:」。 $ decrypted_text。 php_eol;

このPHPコードは、AES-128-CBC暗号化モードを使用し、暗号化と復号化関数にパラメーターとして渡されたランダムIVベクトルを生成します。暗号化中、IVベクターと暗号化されたデータが一緒にエンコードされます。復号化するとき、エンコードされた文字列は最初にIVベクターと暗号文にデコードされ、次に復号化されます。この方法により、PHPによって実装されたAES暗号化と復号化がJavaコードと一致することが保証されます。

上記の方法により、Javaコードと一致するAES暗号化と復号化効果を実現できます。さらに質問がある場合、または追加のヘルプが必要な場合は、引き続き質問してください。

以上がPHPは、AESの暗号化と復号化をJavaと一致する方法をどのように実装していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
ai合并图层的快捷键是什么ai合并图层的快捷键是什么Jan 07, 2021 am 10:59 AM

ai合并图层的快捷键是“Ctrl+Shift+E”,它的作用是把目前所有处在显示状态的图层合并,在隐藏状态的图层则不作变动。也可以选中要合并的图层,在菜单栏中依次点击“窗口”-“路径查找器”,点击“合并”按钮。

ai橡皮擦擦不掉东西怎么办ai橡皮擦擦不掉东西怎么办Jan 13, 2021 am 10:23 AM

ai橡皮擦擦不掉东西是因为AI是矢量图软件,用橡皮擦不能擦位图的,其解决办法就是用蒙板工具以及钢笔勾好路径再建立蒙板即可实现擦掉东西。

谷歌超强AI超算碾压英伟达A100!TPU v4性能提升10倍,细节首次公开谷歌超强AI超算碾压英伟达A100!TPU v4性能提升10倍,细节首次公开Apr 07, 2023 pm 02:54 PM

虽然谷歌早在2020年,就在自家的数据中心上部署了当时最强的AI芯片——TPU v4。但直到今年的4月4日,谷歌才首次公布了这台AI超算的技术细节。论文地址:https://arxiv.org/abs/2304.01433相比于TPU v3,TPU v4的性能要高出2.1倍,而在整合4096个芯片之后,超算的性能更是提升了10倍。另外,谷歌还声称,自家芯片要比英伟达A100更快、更节能。与A100对打,速度快1.7倍论文中,谷歌表示,对于规模相当的系统,TPU v4可以提供比英伟达A100强1.

ai可以转成psd格式吗ai可以转成psd格式吗Feb 22, 2023 pm 05:56 PM

ai可以转成psd格式。转换方法:1、打开Adobe Illustrator软件,依次点击顶部菜单栏的“文件”-“打开”,选择所需的ai文件;2、点击右侧功能面板中的“图层”,点击三杠图标,在弹出的选项中选择“释放到图层(顺序)”;3、依次点击顶部菜单栏的“文件”-“导出”-“导出为”;4、在弹出的“导出”对话框中,将“保存类型”设置为“PSD格式”,点击“导出”即可;

ai顶部属性栏不见了怎么办ai顶部属性栏不见了怎么办Feb 22, 2023 pm 05:27 PM

ai顶部属性栏不见了的解决办法:1、开启Ai新建画布,进入绘图页面;2、在Ai顶部菜单栏中点击“窗口”;3、在系统弹出的窗口菜单页面中点击“控制”,然后开启“控制”窗口即可显示出属性栏。

GPT-4的研究路径没有前途?Yann LeCun给自回归判了死刑GPT-4的研究路径没有前途?Yann LeCun给自回归判了死刑Apr 04, 2023 am 11:55 AM

Yann LeCun 这个观点的确有些大胆。 「从现在起 5 年内,没有哪个头脑正常的人会使用自回归模型。」最近,图灵奖得主 Yann LeCun 给一场辩论做了个特别的开场。而他口中的自回归,正是当前爆红的 GPT 家族模型所依赖的学习范式。当然,被 Yann LeCun 指出问题的不只是自回归模型。在他看来,当前整个的机器学习领域都面临巨大挑战。这场辩论的主题为「Do large language models need sensory grounding for meaning and u

ai移动不了东西了怎么办ai移动不了东西了怎么办Mar 07, 2023 am 10:03 AM

ai移动不了东西的解决办法:1、打开ai软件,打开空白文档;2、选择矩形工具,在文档中绘制矩形;3、点击选择工具,移动文档中的矩形;4、点击图层按钮,弹出图层面板对话框,解锁图层;5、点击选择工具,移动矩形即可。

AI抢饭碗成真!近500家美国企业用ChatGPT取代员工,有公司省下超10万美元AI抢饭碗成真!近500家美国企业用ChatGPT取代员工,有公司省下超10万美元Apr 07, 2023 pm 02:57 PM

自从ChatGPT掀起浪潮,不少人都在担心AI快要抢人类饭碗了。然鹅,现实可能更残酷QAQ......据就业服务平台Resume Builder调查统计,在1000多家受访美国企业中,用ChatGPT取代部分员工的,比例已达到惊人的48%。在这些企业中,有49%已经启用ChatGPT,还有30%正在赶来的路上。就连央视财经也为此专门发过一个报道:相关话题还曾一度冲上了知乎热榜,众网友表示,不得不承认,现在ChatGPT等AIGC工具已势不可挡——浪潮既来,不进则退。有程序员还指出:用过Copil

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン