Maison base de données tutoriel mysql 使用MD5编码实现数据库用户密码字段的加密

使用MD5编码实现数据库用户密码字段的加密

Jun 07, 2016 pm 02:56 PM
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的目的,是为了调试方便,同时多提供一个知识点。 
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tutoriel pour changer le mot de passe wifi sur téléphone mobile (opération simple) Tutoriel pour changer le mot de passe wifi sur téléphone mobile (opération simple) Apr 26, 2024 pm 06:25 PM

Tutoriel pour changer le mot de passe wifi sur téléphone mobile (opération simple)

Comment obtenir facilement le mot de passe WiFi d'un téléphone mobile connecté (trouver rapidement le mot de passe WiFi enregistré dans le téléphone mobile) Comment obtenir facilement le mot de passe WiFi d'un téléphone mobile connecté (trouver rapidement le mot de passe WiFi enregistré dans le téléphone mobile) May 08, 2024 pm 01:10 PM

Comment obtenir facilement le mot de passe WiFi d'un téléphone mobile connecté (trouver rapidement le mot de passe WiFi enregistré dans le téléphone mobile)

Que dois-je faire si mon mot de passe Win10 ne répond pas aux exigences de la politique de mot de passe ? Que faire si le mot de passe de mon ordinateur ne répond pas aux exigences de la politique ? Que dois-je faire si mon mot de passe Win10 ne répond pas aux exigences de la politique de mot de passe ? Que faire si le mot de passe de mon ordinateur ne répond pas aux exigences de la politique ? Jun 25, 2024 pm 04:59 PM

Que dois-je faire si mon mot de passe Win10 ne répond pas aux exigences de la politique de mot de passe ? Que faire si le mot de passe de mon ordinateur ne répond pas aux exigences de la politique ?

Comment réinitialiser le mot de passe WiFi via un routeur (étapes simples pour vous aider à protéger la sécurité de votre réseau domestique) Comment réinitialiser le mot de passe WiFi via un routeur (étapes simples pour vous aider à protéger la sécurité de votre réseau domestique) May 03, 2024 pm 03:01 PM

Comment réinitialiser le mot de passe WiFi via un routeur (étapes simples pour vous aider à protéger la sécurité de votre réseau domestique)

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées

Qu'est-ce que Bitget Launchpool ? Comment utiliser Bitget Launchpool ? Qu'est-ce que Bitget Launchpool ? Comment utiliser Bitget Launchpool ? Jun 07, 2024 pm 12:06 PM

Qu'est-ce que Bitget Launchpool ? Comment utiliser Bitget Launchpool ?

Comment gérer les erreurs de connexion à la base de données en PHP Comment gérer les erreurs de connexion à la base de données en PHP Jun 05, 2024 pm 02:16 PM

Comment gérer les erreurs de connexion à la base de données en PHP

See all articles