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

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

QA

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

본문

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

 

관리자페이지에서 비번 변경을 하면 암호화된 값으로 변환되어 저장되기는 하는데, 여러개 (한번에 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;
답변을 작성하시기 전에 로그인 해주세요.
전체 163
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT