Developer

PHP | (PHP/MySQL) password_hash / password / old_password

페이지 정보

작성일2022-03-02 12:36 조회397회

본문

PASSWORD HASH

[PASSWORD 암호화]

// 비밀번호 암호화
$hash = password_hash($password, PASSWORD_DEFAULT);
// 비밀번호 일치하는지 비교
if (password_verify($password, $hash_password)) {
	// 비밀번호 일치
}

PASSWORD

[PASSWORD SQL문 생성]

SELECT CONCAT('*', UPPER(SHA1(UNHEX(SHA1(str)))));

[PASSWORD 함수 만들기]

CREATE DEFINER=CURRENT_USER() FUNCTION password(
`str` TEXT
)
RETURNS varchar(41) CHARSET utf8
LANGUAGE SQL
NOT DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
COMMENT '버전 8에서 password 함수는 삭제됨'
BEGIN
DECLARE pwd VARCHAR(41);
SELECT CONCAT('*', UPPER(SHA1(UNHEX(SHA1(str))))) INTO pwd;
RETURN pwd;
END

OLD_PASSWORD

[PHP Function old_password]

function old_password($password) {
	$nr=0x50305735;
	$nr2=0x12345671;
	$add=7;
	$charArr = preg_split("//", $password);
	foreach ($charArr as $char) {
		if (($char == '') || ($char == ' ') || ($char == '\t')) continue;
		$charVal = ord($char);
		$nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
		$nr2 += ($nr2 << 8) ^ $nr;
		$add += $charVal;
	}
	return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
}

[SQL CREATE FUNCTION OLD_PASSWORD]

DROP FUNCTION IF EXISTS OLD_PASSWORD;
DELIMITER $$
CREATE DEFINER=CURRENT_USER() FUNCTION OLD_PASSWORD (input BLOB) 
RETURNS CHAR(16)
DETERMINISTIC
BEGIN 
  DECLARE nr BIGINT;
  DECLARE nr2 BIGINT;
  DECLARE ad BIGINT;
  DECLARE inlen INT;
  DECLARE i INT;
  DECLARE b CHAR;
  DECLARE tmp INT;
  DECLARE output CHAR(16);
  
  SET nr = 1345345333;
  SET nr2 = 0x12345671;
  SET ad = 7;
  SET inlen = LENGTH(input);
  SET i = 1;

  IF (input = '' OR input IS NULL) THEN
    RETURN input;
  END IF;

  
  WHILE i <= inlen DO
    SET b = MID(input, i, 1);
    IF b != ' ' AND b != '\t' THEN
      SET tmp = ORD(b);
      SET nr = nr ^ ((((nr & 63) + ad) * tmp) + ((nr << 8) & 0xFFFFFFFF));
      SET nr2 = nr2 + (((nr2 << 8) & 0xFFFFFFFF) ^ nr);
      SET ad = ad + tmp;
    END IF;
    SET i = i + 1;
  END WHILE;
    
  SET nr  = nr  & ((1 << 31) - 1);
  SET nr2 = nr2 & ((1 << 31) - 1);      
  SET output = LOWER(CONCAT(LPAD(HEX(nr),8,'0'), LPAD(HEX(nr2),8,'0'))); 
        
  RETURN output;
END$$
DELIMITER ;
#sql #mysql #mariadb #php #password_hash #password_verify #password #old_password



  • 카카오스토리로 보내기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 더보기
  • Naver Blog로 보내기
  • TUMBLR로 보내기
  • LinkedIN으로 보내기
  • REDDIT으로 보내기
  • delicio으로 보내기
  • pinterest으로 보내기
  • 블로거로 보내기
php jquery cloud HTML 무설치 클라우드 script 팀박스 TEAMBOX 포터블 ssh css 기어s3 시그널 스마트워치 공유캐시삭제 facebook 삼성 페이스북 소스 코메디 IT CNET VR가상현실 싸이이비즈 ColorScripter GoingHome LGU+ 기업용클우드 sgnl 스마트시곗줄 extension 3DBChip 아스키코드 드라이버 나무클라우드 미국정보교표준부호 ASCII 아스키 selectbox chrome google 손가락통화 MiBand2 미밴드2 샤오미 Xiaomi 색상표 구글 크롬 확장프로램 제어 Comedy 팝업창 openssl encrypt decrypt 암호화 PHPParser 문서파싱 mRemote 서버관리프로그램 RemoteDesktop PHP암호화 array 레이어 오늘하루닫기 줄바꿈 word-break white-spac CURL/a> ajax 말줄임표 배열 컬러코드 ColorCode ssh2 원태연 시집 넌가끔가다 마술 수여니 재밋다 magic 수호천사 재미 ZOAPROJECT RADAZoa sftp jqueryui datepicker 하늘 하트 구름 김윤아 뮤직비디오 RADA Gamarjobat