Vivo Y51系列第三方包 - 雨月空间站

前言

Vivo Y51系列(Y51A、Y51L等),基于高通410处理器,而根据Vivo的BUG,可以进行解锁Bootloader(即:BL锁)。

Y51机型过老,不再提供技术支持!!!

Y51系列第三方包(MIUI9、Flyme5、Vivo官改包等等)。未经允许,不得转载、改包。本博客包,部分底包由:Ayush提供(已经授权)。 作者(酷安ID):Mintimate、爱殇璃、一人一车一世界。 作者(B站ID):Mintimate。

如需了解跟多 1.可进博客群反馈。 博客群已经解散 2.Telegram电报群:https://t.me/joinchat/HpD_JRRvRN-SIfKWMVM6ow 本博客所有的包,基于Y51系列C版本系统制作(Android5.1),基于Android8.1的包,因为没有内核源码,Bug待修复。

区分A和C版本

A和C版本,并不是指Y51C、Y51A,而是Vivo Y51系列版本号;在Vivo Y51系列上最直接体现: A版:Android5.0 C版:Android5.1

针对A和C版本,因为内核不同,且驱动不一样;需要用对应版本的Twrp,否则无法触控。

解锁Bootloader

准备工作

1.下载解锁文件(文件一样,二选一): 城通网盘(推荐) GitHub 2.手机进入献祭模式(Fastboot) 3.连接电脑,并确保Fastboot驱动安装,即:电脑成功连接手机。

解锁过程

1.打开fastboot.exe文件 2.管理员许可 3.解锁成功

该fastboot仅在Y51系列测试通过,其他手机未测试。 Vivo手机解锁后,控制台可能显示device unlock fail,但是是成功解锁的,并且开机并没有提示(Device is unlock)。但是,解锁后,可刷入Twrp等第三方Recovery。

刷入第三方Recovery(Twrp)

Twrp由内核编译,所以针对不同版本可能内核,可能会出现无法触控的情况 (我也不知道为什么Vivo手机系统还要改触控驱动,还不开源)

下载Twrp一键输入脚本

C版本一键输入Twrp脚本

针对C版本系统(即:Android5.1): vivo Y51系列C版内核一键刷入Twrp3.2.3.zip: https://089u.com/file/26158157-453643901

注意:C版本不可Root;如果使用Miui系列Root版本,在刷完后,如果出现无法触控问题,请连接电脑,刷入A版本Twrp。

A版本一键刷入Twrp脚本

针对A版本系统(即:Android5.0): vivo Y51系列A版内核一键刷入Twrp.zip: https://089u.com/file/26158157-453644780

刷入Twrp

手机进入Fsatboot连接电脑,解压刚刚下载的一键输入脚本,双击执行文件,按提示操作即可:

进入Twrp

刷好后,选择进入Recovery即可。

注意:因为Vivo Y51系统设计原因,有可能刷入成功但是显示失败;建议不管失败或者成功,都进入Recovery查看结果。

MIUI包

MIUI系列提供多个版本,其中MIUI9: 1.国内版本(ROOT和非ROOT版本)。2.国际版本

MIUI9图片预览

点击查看详情

MIUI9国内版本下载

国内版本基于Ayush的底包开发(已经有Ayush亲自授权)

ROOT版本 国内版本我(@Mintimate)参与过开发,但是主要是@一人一车一世界开发。@一人一车一世界还添加了ROOT,但是因为Vivo内核没有开源的原因,ROOT是Kingroot。该版面版本为博客特别版本。特别内容: 1.开机动画为AndroidI One 2.添加了冰箱提权插件

(未经允许,禁止改包。转载请注明作者和改版块地址。) 百度云提取码: mmx7

MIUI9国际版本下载

XDA原地址 Google

Flyme5包

Flyme5图片预览

点击查看详情

今天特意博主我刷了了一下:

Flyme5是 @爱离殇 移植,由我@Mintimate 进行更改。 插桩移植,所以会有一些bug: 1.Sim卡有些问题,仅可单卡 个人觉得,Flyme5的扁平化风格还是不错的 (未经允许,禁止改包。转载请注明作者和改版块地址。) 百度云提取码:lvc4

Vivo官改包

(未经允许,禁止改包。转载请注明作者和改版块地址。) 官改包由,@一人一车一世界和@Mintimate,一起制作。分两个版本:

不可Root版本 使用Vivo后期内核,所以对su二进制文件进行了更牢固的加密,不可Root: 1.删除Vivo全家桶 2.加入绿色守护(不需要可以删除) 3.系统调用AndroidWebview内核 百度云提取码: hz1s

可Root版本 使用偏早的Vivo内核(不是最早的,最早的无法安装Google框架)。 可以使用Kingroot自行Root。 1.删除Vivo全家桶 2.使用Via浏览器(可以删除) 3.系统调用AndroidWebview内核 百度云提取码:pq94

CM12底包系列包

Worning

所以CM系列的底包,因为CM底包的问题,所以:

使用Xposed,请使用Xposed89版本。 一些应用可能会造成不可避免的闪退。 如需Google服务,可以下载Gapps下载刷入。但是据用户反馈,有概率会FC。

CM12

这是最基础的: 百度云提取码:9dv3

RR

RR:Resurrection Remix ROM 早期的RR基于CM的底包,这次也不意外 百度云提取码:o20m

线刷回官方

下载QFIL

QPST高通官方下载 确保电脑安装了高通驱动(非手机Fastboot驱动等):

城通网盘 微软官网

下载固件全量包

这边只提供C版本全量包: 百度云链接 密码:r0qm

使用QPST刷入固件

该b方法已经多次测试,没有问题。方法和一般刷入9008包类似。 注意:Vivo在挂机状态下,同时按音量-和音量+持续30秒,接入电脑,即可接入9008模式,进行线刷。

本文转载于网络 如有侵权请联系删除

相关文章

  • Redis 复制5

    在slave上执行slaveof192.168.75.116379命令,可以看到空白的库有了数据[root@m2tmp]#telnetlocalhost6379 Trying::1... Connectedtolocalhost. Escapecharacteris'^]'. keys* *0 keys* *0 slaveof192.168.75.116379 +OK keys* *6 $1 d $1 c $1 9 $1 b $1 a $1 8复制master上也多了一个dump.rdb文件127.0.0.1:6379>keys* 1)"b" 2)"a" 3)"c" 4)"8" 5)"9" 6)"d" 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379>quit [root@m1~]#ls anaconda-ks.cfgDownloadsinstall.log.syslogPictu

  • Spring读源码系列之AOP--08--aop执行完整源码流程之自动代理创建器导入的两种方式

    Spring读源码系列之AOP--08--aop执行完整源码流程之自动代理创建器导入的两种方式环境搭建Spring启用注解式aop的两种方式xml方式--<aop:aspectj-autoproxy/>AspectJAutoProxyBeanDefinitionParser---专门解析aop:aspectj-autoproxy标签AopNamespaceUtils---处理xml形式的aop命名空间工具类AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary--注册自动代理创建器AopConfigUtils.forceAutoProxyCreatorToUseClassProxying---强制使用cglib完成代理AopConfigUtils.forceAutoProxyCreatorToExposeProxy---将目标对象暴露到aopcontext中注解方式-@EnableAspectJAutoProxyAspectJAutoProxyRegistrar---为容器注册自动代理创建器As

  • iOS 监听键盘

    百度所查到的键盘监听大部分用的是UIKeyboardDidShowNotification//已经显示UIKeyboardDidHideNotification//已经隐藏然后我自己去试一直觉得一些空间跟随键盘的移动是有时间间隔的 一直想不明白他们是怎么实现的 求大神告知 所以自己看源码发现还有UIKeyboardWillShowNotification//将要显示UIKeyboardDidHideNotification//将要隐藏这样是能完美的解决问题的 至少在我自己的项目需求中是可以的最后别忘记在控制器消失中移除观察者哦-(void)registerForKeyboardNotifications{  [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWasShown:)name:UIKeyboardWillShowNotificationobject:nil];  [[NSNotificationCenterdefaultCenter]addObserver:selfse

  • LeetCode 0136 - Single Number

    SingleNumberDesicriptionGivenanon-emptyarrayofintegers,everyelementappearstwiceexceptforone.Findthatsingleone.Note:Youralgorithmshouldhavealinearruntimecomplexity.Couldyouimplementitwithoutusingextramemory?Example1:Input:[2,2,1] Output:1复制Example2:Input:[4,1,2,1,2] Output:4复制SolutionclassSolution{ public: intsingleNumber(vector<int>&nums){ intres=0; for(autoit:nums) res^=it; returnres; } };复制

  • 学会这10种定时任务,有点飘了...

    前言最近有几个读者私信给我,问我他们的业务场景,要用什么样的定时任务。确实,在不用的业务场景下要用不同的定时任务,其实我们的选择还是挺多的。我今天给大家总结10种非常实用的定时任务,总有一种是适合你的。一.linux自带的定时任务crontab不知道你有没有遇到过这种场景:有时需要临时统计线上的数据,然后导出到excel表格中。这种需求有时较为复杂,光靠写sql语句是无法满足需求的,这就需要写java代码了。然后将该程序打成一个jar包,在线上环境执行,最后将生成的excel文件下载到本地。为了减小对线上环境的影响,我们一般会选择在凌晨1-2点,趁用户量少的时候,执行统计程序。(其实凌晨4点左右,用户才是最少的)由于时间太晚了,我们完全没必要守在那里等执行结果,一个定时任务就能可以搞定。那么,这种情况用哪种定时任务更合适呢?答案是:linux系统的crontab。(不过也不排除有些项目没部署在linux系统中)运行crontab-e,可以编辑定时器,然后加入如下命令:02***/usr/local/java/jdk1.8/bin/java-jar/data/app/tool.jar&g

  • 全转录组重磅来袭,联合分析你知多少 ?

    做过全转录组的童鞋们都知道全转录组是1个样本构建2种文库,得到4种RNA(mRNA、lncRNAcicrRNA、smallRNA)。然而拿到数据时候,我们是不是有种很懵的感觉,不禁感叹数据量如此大,该怎么形成一个完整的调控网络?那不妨看看全转录组联合分析,小编带你感受全转录组联合分析的美!来,一张导图带你快速一览全局。 策略一差异RNA在全基因组范围内分布拿到数据后为了快速的了解差异的mRNA、差异miRNA、差异lncRNA或者是差异circRNA分布情况,一般可以先做饼状图,差异基因分布柱状图,或者是来一张酷炫的圈图,对数据整体情况进行查看。饼状图往往是看在项目中整体检测到的基因或者是差异基因(注意这里的基因可以mRNA、miRNA、lncRNA、circRNA中的任意一种的占比情况;差异基因基因分布柱状图则主要展示不同类型的RNA在不同染色体表达量的分布情况。圈图则主要是从全基因组范围窥探不同类型的RNA表达量的情况,从多角度看数据的差异有助于发现差异调控机制。Fig1A:差异RNA显著性circos图。B:差异表达的RNA数目分布。C:RNA在不同染色体的表达分布策略二差异ge

  • Kubernetes中HostPath的风险和防范

    Kubernetes的安全问题,被提及比较多的一般包括几个点:Docker&Kubernetes参数加固RBACRoot镜像特权容器众所周知,很多安全问题是爆发在内部的,因此有了零信任的说法。内网能够比较容易地接触在成功接触集群之后,仅仅通过对HostPath的使用,就有机会对集群和运行其上的工作负载进行窥探,甚至进行写入操作。下面会分为三个部分,分别介绍可能接触集群的方法,入侵危害、以及建议的防范手段。接触集群要入侵一个集群,通常需要用某种方式和集群进行接触,通常方式有几种:意外暴露无鉴权的明文端口部分集群管理员为了方便访问,或者其他历史遗留原因,选择使用无鉴权的APIServer,或者暴露Kubelet的只读端口。意外暴露Dashboard类服务很多同学偏爱图形化的Dashboard服务,这类服务通常需要有较高的授权级别,可以运行较多的管理任务。安装恶意应用现在很多软件使用curl|kubectl-f-的形式进行快速安装,对于有外网访问能力的Kubernetes集群来说,不加验证的运行未知应用,随时处于引狼入室的威胁之中。Kubeadm安装后会缺省提供一个admin.con

  • [-Flutter自组篇-] Flutter中四十行代码能做什么?

    看完此文,你一定会会惊讶于Flutter在视图方面是多么优雅 你拿之与Android原生或iOS原生相比,简直天差地别,就像蒸汽时代VS电器时代 下面就是四十行代码能够发挥出的威力,其中每个文字都可以替换成任意组件,Flutter(颤抖)吧! 1.TreeWidget的思路以前Android原生,跟过鸿阳的视频做过类似的树状效果,当时还是小白,听得云里雾里,还好最后实现了。 既然Flutter的视图如此强大,那到底能有多强大,组件的复用如何秒杀原生视图 对于这个树状组件,开始设计时我也很头疼,也走错了路,想一下将所有节点显示,然后控制显隐 然未果,可以说山重水复疑无路,柳暗花明又一村。灵光一现,组件不就是用来拼合的吗? 于是我不再注重一统全局,而是化整为零,各个击破。结果证明这样是对的。 1.1:Node对象这是最初设计时就意识到的,我必须通过一个对象去控制节点, 这个Node中记录自身Widget和它内部的若干Node,记住是Node!!! ///记录节点信息的Node类 classNode{ Widgetme;//节点自身Widget List<Node>childre

  • 反射方法创建委托

    1usingSystem; 2usingSystem.Linq; 3usingSystem.Reflection; 4usingSystem.Diagnostics.Contracts; 5 6namespaceWalterlv.Demo 7{ 8publicstaticclassInstanceMethodBuilder<T,TReturnValue> 9{ 10///<summary> 11///调用时就像varresult=func(t)。 12///</summary> 13[Pure] 14publicstaticFunc<T,TReturnValue>CreateInstanceMethod<TInstanceType>(TInstanceTypeinstance,MethodInfomethod) 15{ 16if(instance==null)thrownewArgumentNullException(nameof(instance)); 17if(method==null)thrownewArgumentNu

  • 以太网的新时代

    以太网(Ethernet)无处不在,已经达到开创者最初想到达到的境界—ETHER,成为人类信息社会无处不在的媒介。以太网已经发展了40多年,以太网的发展历史大致是以10倍速来进行的,10M、100M、1G、10G、40G、100G,但从近几年开始,以太网不再以10倍阶进,而出现了多样性。为什么会这样?以太网的地位,犹如“普天之下,莫非以太,率土之宾,莫非IP”。然而,以太网生态系统却面临新的挑战,因为互联网世界对它的需求已经超出了简单的局域网与广域网的概念,它必须能够适合多样性的网络——这种多样性需求甚至要达到工业领域的每个毛孔,包括车联网。变化与分化随着应用和需求的多样化,未来以太网演进的方式将与以往不同,单一的演进之路不能满足未来所有需求,以太网应用需要量体裁衣,按需而变。种种变化发生在两个显著和重要的场景中,一个是智能楼宇,另一个是数据中心。在多数人眼里以铜缆为主体的智能楼宇,与以光纤为主体的数据中心,成为以太网应用的两个日渐分离的应用市场。尽管两个领域多有重叠,但依然可以建立一个应用的分水岭;另一个分水岭则是IT设备。在IT的发展过程,终端设备的接入速度与网络主干的速度也有阶梯

  • Javascript构造函数

       构造函数注意事项:1.默认函数首字母大写2.构造函数并没有显示返回任何东西。new操作符会自动创建给定的类型并返回他们,当调用构造函数时,new会自动创建this对象,且类型就是构造函数类型。3.也可以在构造函数中显示调用return.如果返回的值是一个对象,它会代替新创建的对象实例返回。如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回。functionPerson(name){                 this.name=name;             } varp1=newPerson('John');复制等同于:        functionperson(name){                 Objectobj=newObject();                 obj.name=name; returnobj;             } varp1=person("John");复制4.因为构造函数也是函数,所以可以直接被调用,但是它的返回值为undefine,此时构造函数里面的this对象

  • 人工智能与机器学习:两者有何不同?

    在过去几年,人工智能和机器学习频繁出现在技术新闻和各种网站上。两者常常被用作同义词,但许多专家认为它们存在微妙且重大的区别。当然,专家们自己有时对于那些区别到底是什么也意见不一。然而一般来说,有两点似乎很清楚:第一,人工智能(AI)这个术语的历史比机器学习(ML)更早;第二,大多数人认为机器学习是人工智能的一个子集。最能清楚表示这种关系的图形之一来自英伟达公司的官方博客。它提供了一个很好的起点,有助于了解人工智能和机器学习之间的区别。人工智能VS机器学习――首先,什么是人工智能?计算机科学家对人工智能有诸多不同的定义,但究其核心,人工智能包括像人类那样来思考的机器。当然,很难确定机器是不是在“思考”。因此实际上,建造人工智能需要建造擅长处理人类擅长的那类工作的计算机系统。创造像人类一样聪明的机器这个想法可以一直追溯到古希腊人,当时流传神创造自动机方面的神话。然而实际上,这个想法直到1950年才真正流行起来。就在那一年,阿兰·图灵(AlanTuring)发表了一篇开创性的论文,题为《计算机器和智能》,提出了机器会不会思考的问题。他提出了著名的图灵测试,该测试实际上声称:如果人类无法判断自

  • 不同系统之间如何共享打印机,一分钟教会你!

    序言:虽然现在网络打印机很常见并且设置共享打印机有安全隐患,但是有些场景或者有些人就有共享一台打印机的需求,并且系统还一样,有xp,有32位win7,还有64位win7,相对来说给我们设置共享打印机会带来一些困扰,但是只要掌握了方法和工具,那配置还是很简单的。今天小编和大家分享一下。 一、实验环境: 1、被共享终端:32位win7 2、需要共享终端:xp和64位win73、所需工具:局域网共享软件ps:软件获取请访问文末“阅读原文”使用密码:62q5查看。二、配置步骤: 1、在32位win7系统安装驱动(32位的)打印测试正常后,正常设置共享即可。2、查看还需要给64位系统共享,在该共享打印机上安装64位驱动,必须保证有64位的驱动,如下图:3、使用局域网共享软件傻瓜式共享打印机,化简为繁,一步到位。如下图: 4、使用64位win7和xp访问被共享的终端如:在运行框或开始菜单中输入\\192.168.1.1,然后直接双击要连接的打印机就好了。ps:部分电脑需要重启。 三、总结综上所述,首先安装不同操作系统区域是关键,然后配置好共享打印机,让其他其他可以无密码访问安装对应驱动。最后,因为

  • IOS系列swift语言之课时七

    这下需要掌握的就是类型转换,类的构造器,判断类型,异常,异常的处理,defer,范型,约束加速刷代码 1importFoundation 2 3/*类型转换 41.利用类的构造器进行转换 52.系统可能提供一些特定的类型专门用来进行类型转换 63.as?和as! 7 8类型判断is和=== 9 10*/ 11 12//leti=5 13//letstri=String(i) 14// 15//classA{ 16//funcam(){ 17// 18//} 19//} 20//classB:A{ 21//funcbm(){ 22// 23//} 24//} 25//classC{ 26// 27//} 28// 29//letins:A=B() 30//letinsb=insas?B 31//letinsb2=insas!B 32//insb2.bm() 33//ifinsb==nil{ 34//print("faill") 35//} 36// 37//ifletz=insas?B{ 38// 39//} 40// 41//ifinsisA{ 42//print("isa...")

  • php 安装 sphinx

      我的环境是ubuntun,所以第一步sudoapt-getinstallpear    第二,根据php.net里说的,去下载sphinx。    第三,peclinstallsphinx_你下好的版本,但是这里会报错,需要你安装了sphinx的client版本。        然后这里的client版本又依赖另一个东西。我下好的问题件 libsphinxclient-dev_2.0.4-1.1ubuntu2_i386.deb依赖 libsphinxclient-0.0.1_2.0.4-1.1ubuntu2_i386.deb,要装这个client-0.0.1。        deb文件用的命令是dpkg-i刚刚最后这个文件名。    这时候执行peclinstalll他里面自己会autodetect,这下就顺利装完了。  &n

  • beautifulsoup 的children和descandants

    之前看爬虫的时候,看到这里就断了,一直不太理解这2个的区别。 今天重新看,也借助了这位哥们的方法,把结果打印出来,我大概知道了这2者的区别。 http://www.cnblogs.com/chensimin1990/p/6725803.html   -------------------------------- fromurllib.requestimporturlopen frombs4importBeautifulSoup html=urlopen("http://www.pythonscraping.com/pages/page3.html") bs_obj=BeautifulSoup(html,'html.parser') #name_list=bs_obj.find_all("span",{"class":"green"}) #fornameinname_list: #print(name.get_text()) #file=open('test.txt','w') #content='' forchildinbs_obj.find("table",{"i

  • HTMLElement HTMLButtonElement html元素类型

    HTMLElement HTMLButtonElement

  • JAVA 校验身份证号码工具类(支持15位和18位)

    importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.GregorianCalendar; importjava.util.Hashtable; importjava.util.regex.Matcher; importjava.util.regex.Pattern; /** *TODO *身份证校验工具类 */ publicclassIDCardUtil{ /* 校验规则: 如果为15位,只能是15位数字;前两位满足省/直辖市的行政区划代码。 如果为18位,允许为18位数字,如出现字母只能在最后一位,且仅能为“X”; 18位中包含年月的字段满足日期的构成规则;前两位满足省/直辖市的行政区划代码; 最后一位校验位满足身份证的校验规则(身份证校验规则见附录)。 附录:身份证校验规则 公民身份证号码校验公式为RESULT=∑(A[i]*W[i])mod11。 其中,i表示号码字符从右至左包括校验码在内的位置序号;A[i]表示第I位置上的数字的数值;W[i]表示第i位置上的加权因子,其值如下

  • AdapterPattern(23种设计模式之一)

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大原则(6):开闭原则 AdapterPattern,UML抽象图百度找,代码实现如下 现需要设计一个可以模拟各种动物行为的机器人Robot,在机器人中定义一系列方法,如机器人叫喊方法cry()、机器人移动方法move()等。如果希望在不修改已有代码的基础上使得机器人既能够像鸟Bird一样的叫和飞,又能像狗Dog一样的叫和跑,使用适配器模式进行系统设计并编程实现 首先,先来先讲讲适配器。适配就是由“源”到“目标”的适配,而当中链接两者的关系就是适配器。它负责把“源”过度到“目标”。在这个例子中,有一个“源”是一机器人对象,他拥有2种技能分别是叫喊和移动,而现在需要机器人变成鸟和狗,好了,现在我们的任务就是要将机器人这个“源”适配到这个岗位中,如何适配呢?显而易见地我们需要为机器人添加一个飞或者跑的方法,这样才能满足不同目标的需要 适配器模式有2种,第一种是“面向类的适配器模式”,第二种是“

  • jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包

    一、jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求。 tps:服务端每秒钟能处理的请求数。 响应时间:就是你从发出请求到服务端返回给你数据的时间。 二、jmeter操作数据库 在测试计划中添加mysql-connector-java-5.1.7-bin.jar     最后添加查看结果树。如果既要查询又要修改操作选择CallableStatement这个模式。 断言:自动帮你校验结果。先添加http请求在后面添加: 三、jmeter分布式操作 jmeter分布式压测(多台电脑一起压测) 1、有多台电脑,每台电脑上都有jmeter,而且这几台电脑都互相能ping通。 2、在我的电脑的jmeter的配置文件里面添加了其他电脑的ip。在jmeter.properties里面添加remote_hosts,用,隔开。 3、在其他人的电脑上要启动jmeter-server。 ps:如果有参数化文件,那么也要在其他人的

  • C# 获取含有数字大小写字母的密码

      publicstringGetPassWord() { stringtext=string.Empty; varnumber="0123456789"; varchars="ABCDEFGHJKLMNOPQRSTUVWXYZabcefghijkmnopqrstuvwxyz"; varrandom=newRandom(); text+=newstring(Enumerable.Repeat(number,4).Select(s=>s[random.Next(s.Length)]).ToArray()); text+=newstring(Enumerable.Repeat(chars,4).Select(s=>s[random.Next(s.Length)]).ToArray()); char[]cArr=text.ToCharArray(); stringresult=""; for(inti=text.Length-1;i>=0;i--) { intindex=random.Next(0,i); result+=cArr[index]; cArr[i

相关推荐

推荐阅读