패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환되어 출력되게
본문
패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환된 값으로 출력되게 하는 방법이 있을까요?
관리자페이지에서 비번 변경을 하면 암호화된 값으로 변환되어 저장되기는 하는데, 여러개 (한번에 50~100개 정도)의 비번을 변경해야 하는 경우가 있어서요.
php 파일내 소스로 만들어서 패스워드에 일반문자로 넣으면 create_hash password 값으로 변환되서 출력하는 방법이 있으면 좋겠습니다.
pbkdf2.compat.php 파일도 살펴보고, 여러가지 방법으로 시도해봤는데, 잘 안되서요.
문자패스워드 => 암호화패스워드 를 출력해서 볼수 있는 PHP 파일변환기(?) 만들어 사용할 수 있을지,
가능하다면 함수를 어떻게 적용해야 할지 도움 부탁 드립니다.
답변 2
다음과 같은 방법으로 해 볼 수 있을 것 같습니다.
루프를 사용하여 처리한후, 배열에 여러 비밀번호를 저장하고, 각 비밀번호를 암호화하여 새로운 배열에 저장하면 될 것 같습니다
$plainPasswords = ['비밀번호1', '비밀번호2', '비밀번호3']; // 원하는 비밀번호 목록
$hashedPasswords = [];
foreach ($plainPasswords as $plainPassword) {
$hashedPassword = password_hash($plainPassword, PASSWORD_DEFAULT);
$hashedPasswords[] = $hashedPassword;
}
// 암호화된 비밀번호 목록 출력
print_r($hashedPasswords);
파일 변환기를 만들 수는 있지만, 보안관련 부분을 고려해서 제작하시면 가능 할 것 같습니다.
참고 하셔서 원하시는 형식으로 구현해 볼 수 있을 것 같습니다.
<?php
function convertPasswordsToFile($inputFile, $outputFile) {
// 오픈할 파일과 저장할 파일을 열기
$inputHandle = fopen($inputFile, 'r');
$outputHandle = fopen($outputFile, 'w');
if ($inputHandle === false || $outputHandle === false) {
die("파일을 열 수 없습니다.");
}
while (!feof($inputHandle)) {
$plainPassword = trim(fgets($inputHandle));
if (!empty($plainPassword)) {
$hashedPassword = password_hash($plainPassword, PASSWORD_DEFAULT);
fwrite($outputHandle, "입력 패스워드: $plainPassword, 암호화 패스워드: $hashedPassword\n");
}
}
// 파일 핸들 닫기
fclose($inputHandle);
fclose($outputHandle);
echo "변환 완료";
}
$inputFile = 'input_passwords.txt'; // 입력 파일 이름
$outputFile = 'output_passwords.txt'; // 출력 파일 이름
convertPasswordsToFile($inputFile, $outputFile);
?>
convertPasswordsToFile라는 함수를 정의하고, 이 함수를 사용하여 입력 파일로부터 문자 패스워드를 읽어 암호화하고 결과를 출력 파일에 저장하게 되며, 입력 파일과 출력 파일 이름을 변수로 설정하고, 함수 호출로 변환을 하면 될 것 같습니다.
1. input_passwords.txt와 같이 입력 파일을 만들고 그 안에 한 줄에 하나씩 암호화하려는 문자 패스워드를 입력
2. PHP 파일 변환기 코드를 작성한 후 PHP 파일로 저장
3. 웹 서버나 명령줄을 통해 PHP 파일을 실행하여 변환작업
4. 결과는 output_passwords.txt와 같은 출력 파일에 저장
$a = 'abcd';
$b = sql_password($a);
echo $b;