패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환된 값으로 출력되게 하는 방법이 있을까요?
관리자페이지에서 비번 변경을 하면 암호화된 값으로 변환되어 저장되기는 하는데, 여러개 (한번에 50~100개 정도)의 비번을 변경해야 하는 경우가 있어서요.
php 파일내 소스로 만들어서 패스워드에 일반문자로 넣으면 create_hash password 값으로 변환되서 출력하는 방법이 있으면 좋겠습니다.
pbkdf2.compat.php 파일도 살펴보고, 여러가지 방법으로 시도해봤는데, 잘 안되서요.
문자패스워드 => 암호화패스워드 를 출력해서 볼수 있는 PHP 파일변환기(?) 만들어 사용할 수 있을지,
가능하다면 함수를 어떻게 적용해야 할지 도움 부탁 드립니다.
답변 2개 / 댓글 4개
다음과 같은 방법으로 해 볼 수 있을 것 같습니다.
루프를 사용하여 처리한후, 배열에 여러 비밀번호를 저장하고, 각 비밀번호를 암호화하여 새로운 배열에 저장하면 될 것 같습니다
$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와 같은 출력 파일에 저장
답변에 대한 댓글 3개
알려주신 방법으로 시도해 봤더니 비번이 생성되기는 하는데, G5 암호형식이 아닌 것 같네요.
변환할때 G5의 암호로 변환되게 하려면 어떻게 적용하면 될까요?
다음과 같이 해보시는건 어떨까 합니다.
[code]
<?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)) {
// Bcrypt 암호화 알고리즘과 비용(cost) 설정
$options = [
'cost' => 12, // 비용을 조정할 수 있으며, 기본값은 10입니다.
];
$hashedPassword = password_hash($plainPassword, PASSWORD_BCRYPT, $options);
fwrite($outputHandle, "입력 패스워드: $plainPassword, 암호화 패스워드: $hashedPassword\n");
}
}
// 파일 핸들 닫기
fclose($inputHandle);
fclose($outputHandle);
echo "변환 완료";
}
$inputFile = 'input_passwords.txt'; // 입력 파일 이름
$outputFile = 'output_passwords.txt'; // 출력 파일 이름
convertPasswordsToFile($inputFile, $outputFile);
?>
[/code]
password_hash 함수를 사용할 때 PASSWORD_BCRYPT 알고리즘을 명시하고, 비용 매개변수를 설정하여 Bcrypt로 암호화하도록 하면 될 것 같습니다.
또한 비용을 조절하면 암호화 강도가 변경되며, 기본값은 10입니다. 일반적으로 10 이상의 값으로 설정하는 것이 좋을 것으로 생각합니다.
$a = 'abcd';
$b = sql_password($a);
echo $b;
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.