当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,
它必须通过Luhn算法来验证通过。
该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881则,奇数位和=35
偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
最后35+35=70 可以被10整除,认定校验通过。
请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。
比如,用户输入:356827027232780
程序输出:成功

【参考测试用例】
356406010024817     成功
358973017867744     成功
356827027232781     失败
306406010024817     失败

358973017867754     失败

#include<iostream>
#include<string>
using namespace std;
int main()
{string s = "358973017867754";int sum1 = 0,sum2=0;for (int i = s.length()-1; i >= 0;i--){//奇数int j = i + 1;if (j % 2 != 0){//字符串转换为整数sum1 += s.at(i)-48;   }else{int a = 0;a = (s.at(i)-48) * 2;if (9 < a && a<100){a -= 9;}sum2 += a;}}int sum3 = (sum1 + sum2) % 10;if (sum3== 0){cout << "成功" << endl;}else{cout << "失败" << endl;}return 0;
}
sum1 += s.at(i)-48;
eg:str=1234
假如str[0]存放的数据类型是字符‘1’,那么减去‘0’就得到一个整形数字1,而不是字符型‘1’, 你还是不懂得话,可以查看C程序设计的最后面的“常用字符与ASCLL代码对照表”。
字符‘0’的ASCLL值是48,而字符‘1’是49,所以str[0]-'0'相当于49-48=1

暴力破解练习(一)信用卡号的验证相关推荐

  1. 蓝桥杯之暴力破解、枚举

    美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学. 他曾在1935~1936年应邀来中国清华大学讲学. 一次,他参加某个重要会议,年轻的脸孔引人注目. 于是有人询问他的年龄,他回答说: & ...

  2. 暴力破解登录密码(登录批量发包)

    除了Fortify和Appscan之外,公司还有使用Burp Suit工具对项目代码进行安全测试,例如会对项目进行 暴力破解登录密码(登录批量发包),而项目中确实存在该漏洞,现已修复,在这里做总结如下 ...

  3. Python黑客攻防(十四)暴力破解FTP口令

    注:本篇文章为个人学习笔记仅供学习交流,请勿用于非法用途. 参考:<Python绝技:运用Python成为顶级黑客>. 前言: 从安全方面考虑,网站允许匿名FTP访问似乎是很疯狂的做法.然 ...

  4. Hydra暴力破解工具的用法

    目录 Hydra 常见参数 破解SSH 破解FTP 破解HTTP 破解3389远程登录 Kali自带密码字典 dirb dirbuster fern-wifi metasploit wfuzz Hyd ...

  5. IT知识百科:什么是暴力破解?

    暴力破解是一种常见的网络安全攻击方法,它利用计算机程序自动尝试大量的密码组合来破解密码.这种攻击方法通常用于获取未经授权的访问权限,如入侵网络系统或个人账户.在本文中,我们将探讨暴力破解的原理.工具和 ...

  6. OD初探 2 :暴力破解: TraceMe的破解

    工具: FishC OD(点我下载) 样本程序:TraceMe(点我下载) 一. 观察程序 && 函数猜测 打开TraceMe,我们可以看到,弹出的登陆框: 首先输入伪造的用户名与密码 ...

  7. 用kali Linux暴力破解Windows RDP(3389号端口)

    RDP是Windows的远程桌面协议. 我们要暴力破解3389号端口的前提是对方的3389号端口是开放的,不过大多数情况下电脑是默认关闭的,即使有远程协助的需要也不一定非得要用到3389号端口,开启不 ...

  8. Java黑皮书课后题第6章:**6.31(金融应用:信用卡号的合法性验证)和**6.32 编写程序,提示用户输入一个long型整数的信用卡号码,显示这个数字是合法的还是非法的

    6.31(金融应用:信用卡号的合法性验证)编写程序,提示用户输入一个long型整数的信用卡号码,显示这个数字是合法的还是非法的 6.31题目 题目描述 破题 6.31代码 6.32 代码 运行实例 6 ...

  9. 第十届 蓝桥杯样题 —— 信用卡号验证

    [编程大题]信用卡号验证 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过. 该校验的过程: 1 ...

最新文章

  1. 没想到,阿里工程师每天必刷的网站是......
  2. Android 音频播放——AudioTrack直接播PCM、MediaPlayer播媒体文件可以是audio
  3. spark如何防止内存溢出_Spark 理论基石 —— RDD
  4. 关于 HeartBleed 安全漏洞的 2 张漫画
  5. zlib / win10 下 vs2019 编译 zlib 的方法
  6. ASP.NET Core Web 支付功能接入 微信-扫码支付篇
  7. Python面试常用二十题总结
  8. np.cross函数详解
  9. 刚学vue,写的一个入门demo,时光网
  10. 王道训练营3月10日
  11. 应用层协议 ——— HTTP协议
  12. 【icourse163】学习python爬虫的代码整理
  13. 【kubernetes/k8s源码分析】CNI calico ipam源码分析
  14. 利用Windows的IFELanguage接口,取得拼音笔划数其实很简单!
  15. PostgreSQL数据库扩展包——原理CreateExtension扩展控制文件解析
  16. 在Windows下使用Python编程
  17. 51单片机红外电子密码锁【红外对管矩阵键盘数码管LCD1602显示模块】
  18. 晶振01——晶振分类和无源晶振的设计
  19. windows10防火墙设置
  20. 【PKI技术】第二弹 — PKI在电信运营商的应用

热门文章

  1. 【论文泛读62】HybridQA:通过表格和文本数据进行多跳问答的数据集
  2. Unity 创建Sprite导致的内存溢出奔溃问题
  3. Modbus协议(翻自wiki)
  4. 关于ckeditor富文本编辑器上传图片返回“不正确的服务器响应”的解决方案
  5. inux下服务器心跳集群脚本
  6. 【机器学习】Rasa NLU以及Rasa Core概念和语法简介(超详细必看)
  7. An error occurred at line: [14] in the generated java file:
  8. Metamask不能访问以太坊账户?隐私模式!
  9. 【RocketMQ】消息的存储设计
  10. 盘后复盘 20160622