使用MD5编码实现数据库用户密码字段的加密
1 前言 众所周知,MD5是目前应用最多的密码保护方法,该编码传说为不可逆加密编码<也就是说,永运无法倒算原码>。 使用MD5加密用户的操作密码,可以有效防止系统维护人员直接进入数据库时出现系统安全漏洞<直接使用SELECT语句查询,将用户密码字段只能看
1 前言
众所周知,MD5是目前应用最多的密码保护方法,该编码传说为不可逆加密编码<也就是说,永运无法倒算原码>。 使用MD5加密用户的操作密码,可以有效防止系统维护人员直接进入数据库时出现系统安全漏洞<直接使用SELECT语句查询,将用户密码字段只能看到乱码,或者"****">
本文针对密码字段加密,作一实例,希望能给大家系统建设过程带来帮助。
2 技术点
2.1 DBMS_OBFUSCATION_TOOLKIT.MD5
DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于SELECT语句。
2.2 Utl_Raw.Cast_To_Raw
DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW类型,要正确显示,需要经过Utl_Raw.Cast_To_Raw转换<该知识点则之前论坛中NICK511贴子中获得>
3 实例演练 3.1 测试环境 使用Scott/Tiger@YourDBName --3.2.1 创建数据表 Drop Table Test_User; CREATE TABLE Test_User ( UserName VARCHAR2(30) NOT NULL, PassWord VARCHAR2(2000) NOT NULL ) / --3.2.2 创建程序包 Create Or Replace Package Test_MD5 AS Function FN_GetMD5(P_Str In VarChar2) Return VarChar2; Function FN_CheckUser (P_UserName In VarChar2 ,P_Password In VarChar2) Return Number; End; / CREATE OR REPLACE PACKAGE BODY Test_MD5 AS FUNCTION FN_GetMD5 (P_Str IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN DBMS_OBFUSCATION_TOOLKIT.MD5( input_string => Upper(P_Str)); END; Function FN_CheckUser (P_UserName IN VARCHAR2 ,P_Password IN VARCHAR2) Return Number Is L_Password VarChar2(2000); BEGIN SELECT Utl_Raw.Cast_To_Raw(Password) INTO L_Password FROM Test_User WHERE Upper(UserName) = UPPER(P_UserName); If Utl_Raw.Cast_To_Raw(FN_GetMD5(P_Password))=L_Password Then Return 1; Else Return 0; End If; EXCEPTION WHEN NO_DATA_FOUND THEN Return 0; END; End; / --3.3 测试 Delete Test_User; Insert Into Test_User Values('A',Test_MD5.FN_GetMD5('aa')); Insert Into Test_User Values('B',Test_MD5.FN_GetMD5('bb')); Commit; Select Test_MD5.FN_CheckUser('a','aa') From Dual; Select Test_MD5.FN_CheckUser('a','bb') From Dual; 注:对MD5编码的比较,可以不需要经过Utl_Raw.Cast_To_Raw转换。此处使用Utl_Raw.Cast_To_Raw的目的,是为了调试方便,同时多提供一个知识点。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Windows 10 システムでは、パスワード ポリシーは、ユーザーが設定したパスワードが特定の強度と複雑さの要件を満たしていることを確認するための一連のセキュリティ ルールです。システムがパスワードがパスワード ポリシーの要件を満たしていないことを示すメッセージを表示する場合、それは通常、パスワードがパスワード ポリシーの要件を満たしていないことを意味します。パスワードは、複雑さ、長さ、または文字の種類に関して Microsoft が設定した要件を満たしていません。どうすればこれを回避できますか?ユーザーはローカル コンピュータ ポリシーでパスワード ポリシーを直接見つけて操作を実行できます。以下を見てみましょう。パスワード ポリシーの仕様に準拠していない解決策: パスワードの長さを変更する: パスワード ポリシーの要件に従って、元の 6 桁のパスワードを 8 桁以上に変更するなど、パスワードの長さを増やすことができます。特殊文字の追加: パスワード ポリシーでは、@、#、$ などの特殊文字を含める必要があることがよくあります。私

携帯電話は現代社会において私たちの生活に欠かせないものとなっています。ワイヤレス ネットワーク接続も、私たちの日常生活に欠かせないツールになっています。しかし、他のデバイスに接続したいのに接続できない、WiFi に接続したがパスワードを忘れたなどの状況に直面することがあります。接続されている携帯電話の WiFi パスワードを簡単に取得するにはどうすればよいですか?電話機に保存されている WiFi パスワードを見つける 1. 設定で「WiFi」オプションを見つけてクリックし、電話機の設定インターフェイス「WiFi」に入り、WiFi 設定ページのオプションに入ります。 2. 接続されている WiFi ネットワークの詳細を開き、接続されている WiFi ネットワークの名前を見つけ、クリックして WiFi 設定ページのネットワークの詳細情報ページに入ります。 3.

無線ネットワークは現代社会において私たちの生活に不可欠な部分となっています。ただし、自宅の WiFi ネットワークを保護することもますます重要になってきています。 WiFi パスワードのリセットは、ネットワークのセキュリティを確保するための重要なタスクです。ホームネットワークのセキュリティを保護するために、この記事ではルーターを通じてWiFiパスワードをリセットする方法を紹介します。ルーターのログイン インターフェイスを理解して、管理者のユーザー名とパスワードを入力し、現在の WiFi 名とパスワードを入力します。新しい WiFi パスワードを設定し、デバイスを再接続して、接続が成功したかどうかを確認します。

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

BitgetLaunchpool は、すべての暗号通貨愛好家向けに設計された動的プラットフォームです。 BitgetLaunchpool はそのユニークな製品で際立っています。ここでは、トークンを賭けて、エアドロップ、高額な報酬、初期参加者限定の寛大な賞金プールなど、より多くの報酬のロックを解除できます。 BitgetLaunchpool とは何ですか? BitgetLaunchpool は、ユーザーフレンドリーな利用規約でトークンをステークして獲得できる暗号通貨プラットフォームです。 Launchpool に BGB またはその他のトークンを投資することで、ユーザーは無料のエアドロップや収益を受け取り、寛大なボーナス プールに参加する機会が得られます。質入れられた資産からの収入は T+1 時間以内に計算され、報酬は以下に基づいて計算されます。

Golang でデータベース コールバック関数を使用すると、次のことを実現できます。 指定されたデータベース操作が完了した後にカスタム コードを実行します。追加のコードを記述せずに、個別の関数を通じてカスタム動作を追加します。コールバック関数は、挿入、更新、削除、クエリ操作に使用できます。コールバック関数を使用するには、sql.Exec、sql.QueryRow、または sql.Query 関数を使用する必要があります。
