【PAT】A1035. Password (20)

本文介绍了一个简单的密码加密程序,该程序使用C语言实现,并通过特定规则替换密码中的字符以增加安全性。文章展示了如何读取用户的账号和原始密码,并对密码进行加密处理。如果密码被修改,则会显示修改后的密码。

A1035. Password (20)

#include <stdio.h>
#include <string.h>

struct team{
    char name[20], pwd[20];
    int ischange;
}teams[1000];

void pwdcrypt(struct team *t, int *counter){
    int len = (int)strlen(t->pwd);
    for(int i = 0; i < len; i++){
        switch (t->pwd[i]) {
            case '1':
                t->pwd[i] = '@';
                t->ischange = 1;
                break;
            case '0':
                t->pwd[i] = '%';
                t->ischange = 1;
                break;
            case 'l':
                t->pwd[i] = 'L';
                t->ischange = 1;
                break;
            case 'O':
                t->pwd[i] = 'o';
                t->ischange = 1;
                break;
            default:
                break;
        }
    }
    if(t->ischange == 1)
        *counter += 1;
}

int main(int argc, const char * argv[]) {

    int N;
    scanf("%d", &N);
    for(int i = 0; i < N; i++){
        scanf("%s %s", teams[i].name, teams[i].pwd);
        teams[i].ischange = 0;
    }

    int counter = 0;
    for(int i = 0; i < N; i++){
        pwdcrypt(&teams[i], &counter);
    }

    if(counter == 0){
        if(N == 1)
            printf("There is %d account and no account is modified", N);
        else
            printf("There are %d accounts and no account is modified", N);
    } else {
        printf("%d\n", counter);
        for(int i = 0; i < N; i++){
            if(teams[i].ischange == 1)
                printf("%s %s\n", teams[i].name, teams[i].pwd);
        }
    }

    return 0;
}
### HTTP Basic 认证错误的解决方法 在使用 Git 或其他需要身份验证的服务时,如果遇到 `HTTP Basic: Access denied` 错误,通常是因为提供的密码或令牌无效。此外,如果启用了两步验证(2FA),则必须使用个人访问令牌(Personal Access Token, PAT)而不是密码[^1]。 #### 错误原因分析 当账户启用了 2FA 时,传统的密码无法用于身份验证,因为系统需要额外的安全层。此时,用户需要生成一个 PAT,并将其用作密码进行身份验证[^2]。如果仍然使用普通密码,系统将返回 `Access denied` 错误。 #### 解决方案 以下是解决此问题的具体方法: 1. **生成个人访问令牌(PAT)** 在 GitLab 或 GitHub 等平台上,导航到用户设置中的“Tokens”或“Developer Settings”,然后创建一个新的 PAT。确保为令牌分配适当的权限范围(例如 `repo` 和 `write:packages`)。生成后,请妥善保存令牌,因为它不会再次显示[^3]。 2. **更新远程仓库 URL 的认证信息** 如果已经配置了远程仓库 URL,则需要更新其认证信息。可以通过以下命令重新设置远程 URL: ```bash git remote set-url origin https://<username>:<personal_access_token>@gitlab.freedesktop.org/freetype/freetype.git ``` 将 `<username>` 替换为实际用户名,`<personal_access_token>` 替换为生成的 PAT。 3. **清除旧的凭据缓存** 如果之前存储了错误的密码或令牌,可能需要清除缓存。在 Windows 上,可以使用凭据管理器删除相关条目;在 macOS 上,可以使用 Keychain Access 删除存储的凭据。Linux 用户可以手动编辑 `.git-credentials` 文件或运行以下命令: ```bash git credential-cache exit ``` 4. **测试新配置** 使用以下命令测试新的配置是否生效: ```bash git push --set-upstream origin quantum6 ``` 如果一切正常,应该不会再出现 `Access denied` 错误。 #### 注意事项 - 如果频繁使用多个仓库,建议启用 Git 凭据助手以避免重复输入令牌。 - 生成的 PAT 应该被视为敏感信息,切勿共享或泄露给他人[^1]。 ```python # 示例代码:通过 Python 脚本生成基本认证头 import base64 def generate_basic_auth_header(username, token): auth_string = f"{username}:{token}" encoded_auth = base64.b64encode(auth_string.encode()).decode() return f"Basic {encoded_auth}" header = generate_basic_auth_header("your_username", "your_personal_access_token") print(header) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值