패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환되어 출력되게

패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환되어 출력되게

QA

패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환되어 출력되게

답변 2

본문

패스워드를 일반문자로 입력하면 그누보드 암호화 로직으로 변환된 값으로 출력되게 하는 방법이 있을까요?

 

관리자페이지에서 비번 변경을 하면 암호화된 값으로 변환되어 저장되기는 하는데, 여러개 (한번에 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와 같은 출력 파일에 저장

우선, 상세한 답변에 다시한번 감사 드립니다.
알려주신 방법으로 시도해 봤더니 비번이 생성되기는 하는데, G5 암호형식이 아닌 것 같네요.
변환할때 G5의 암호로 변환되게 하려면 어떻게 적용하면 될까요?

그누보드에서 사용하는 비밀번호 암호화 형식은 Bcrypt인 것으로 알고 있습니다. 따라서, password_hash 함수를 사용하여 암호를 Bcrypt 형식으로 암호화해야 할 것으로 생각합니다.

다음과 같이 해보시는건 어떨까 합니다.


<?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);
?>


password_hash 함수를 사용할 때 PASSWORD_BCRYPT 알고리즘을 명시하고, 비용 매개변수를 설정하여 Bcrypt로 암호화하도록 하면 될 것 같습니다.
또한 비용을 조절하면 암호화 강도가 변경되며, 기본값은 10입니다. 일반적으로 10 이상의 값으로 설정하는 것이 좋을 것으로 생각합니다.


$a = 'abcd';
$b = sql_password($a);
echo $b;
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 163
© SIRSOFT
현재 페이지 제일 처음으로